简体   繁体   English

根据文本长度对齐图标

[英]aligning icon based on text length

I have a title text and an icon.我有一个标题文本和一个图标。

I need to align the icon to the left if the title can accomodate in single line.如果标题可以容纳在单行中,我需要将图标左对齐。

If the title covers more than 1 line, then I have to align the icon to the top.如果标题超过 1 行,那么我必须将图标对齐到顶部。

I found a solution using Javascript, by appending a dynamic class based on the height and lineheigth.我找到了一个使用 Javascript 的解决方案,方法是根据高度和线高附加一个动态 class。

Is there any way to achieve only using css?有没有什么办法只使用 css 来实现? 在此处输入图像描述

This sounds like something that could be solved with flex .这听起来像是可以用flex解决的问题。

You are looking for the property flex-wrap .您正在寻找属性flex-wrap In your case, flex will keep your items inline, unless one becomes too long, in which case it will wrap it to the next line.在您的情况下, flex 将使您的项目保持内联,除非一个变得太长,在这种情况下,它会将其包装到下一行。

The CSS code would look something like this: CSS 代码如下所示:

.item{
    display:flex;
    justify-content:center;
    flex-wrap:wrap;
}
.icon{
    flex-shrink:0;
}

The HTML should look something like this: HTML 应如下所示:

<div class="item">
    <div class="icon"></div>
    <div class="text">aaaaaaaaaa</div>
</div>
<div class="item">
    <div class="icon"></div>
    <div class="text">
        aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
        aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
        aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
        aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
        aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
        aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
        aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    </div>
</div>

Your item would be the one that you should assign flex to.您的item将是您应该分配 flex 的项目。

Have icon as a pseudo element like i have added via css.将图标作为伪元素,就像我通过 css 添加的一样。

 div{ margin: 1em 0; border: 1px solid black; padding: 2em; position: relative; } div::before { position: absolute; left: 0; content:"icon"; }
 <div>My Content</div> <div>My Log ContenttttttttttttttttttttttttttttttttttttMy Log ContenttttttttttttttttttttttttttttttttttttMy Log ContenttttttttttttttttttttttttttttttttttttMy Log ContenttttttttttttttttttttttttttttttttttttMy Log ContenttttttttttttttttttttttttttttttttttttMy Log ContenttttttttttttttttttttttttttttttttttttMy Log ContenttttttttttttttttttttttttttttttttttttMy Log ContenttttttttttttttttttttttttttttttttttttMy Log Contentttttttttttttttttttttttttttttttttttt</div>

First you add icon and text elements in root element.首先,在根元素中添加图标和文本元素。

<div class="root"> <div class="icon">Icon</div> <div class="text">Text</div> </div>

This root element styles:这个根元素 styles:

.root{ display: flex; flex-wrap: wrap; }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM