简体   繁体   English

如何使用 CSS 将单词换到下一行?

[英]How to break word to the next line with CSS?

How can I make it look better for mobile: (break words by line)我怎样才能使它在移动设备上看起来更好:(按行分词)

I tried white-space, word-break, word-spacing, display:table-caption and can't make it work.我尝试了空格、分词、字间距、显示:表格标题,但无法使其工作。

https://codepen.io/Jackkk/pen/zYYbvKY https://codepen.io/Jackkk/pen/zYYbvKY

 .nav>li { display: inline-block; } /* very simplified css*/
 <ul class="nav nav-line-bottom nav-normal nav-size-normal nav-center"> <li class="tab active has-icon"><a href="#tab_meble-fryzjerskie"><span>Meble fryzjerskie</span></a></li> <li class="tab has-icon"><a href="#tab_fotele-fryzjerskie"><span>Fotele fryzjerskie</span></a></li> <li class="tab has-icon"><a href="#tab_myjnie-fryzjerskie"><span>Myjnie fryzjerskie</span></a></li> <li class="tab has-icon"><a href="#tab_konsolety-fryzjerskie"><span>Konsolety fryzjerskie</span></a></li> <li class="tab has-icon"><a href="#tab_pomocniki-fryzjerskie"><span>Pomocniki fryzjerskie</span></a></li> <li class="tab has-icon"><a href="#tab_meble-48h"><span>Meble 48h</span></a></li> </ul>

Link to example website: https://dobrzekupuj.pl/链接到示例网站: https://dobrzekupuj.pl/

Set a width or max-width to every li为每个li设置一个widthmax-width

For example例如

.nav > li {
    width: 70px;
}

or或者

.nav > li {
    max-width: 70px;
}

For mobile only put it on a media query对于移动设备,仅将其放在媒体查询中

@media (max-width: 480px) {
    .nav > li {
        width: 70px;
    }
}

the table-layout set to fixed seems the best option to wrap all elements at once into 2 lines:设置为fixedtable-layout似乎是将所有元素一次包装成 2 行的最佳选择:

 ul { display: table; table-layout: fixed; margin: auto; border-spacing: 1vw 0; } li { display: table-cell; } /* makup/see me */ li {border:1px solid;} ul { border-spacing: 1vw 0; } * {margin:0; padding:0; box-sizing:border-box; }
 <ul class="nav nav-line-bottom nav-normal nav-size-normal nav-center"> <li class="tab active has-icon"><a href="#tab_meble-fryzjerskie"><span>Meble fryzjerskie</span></a></li> <li class="tab has-icon"><a href="#tab_fotele-fryzjerskie"><span>Fotele fryzjerskie</span></a></li> <li class="tab has-icon"><a href="#tab_myjnie-fryzjerskie"><span>Myjnie fryzjerskie</span></a></li> <li class="tab has-icon"><a href="#tab_konsolety-fryzjerskie"><span>Konsolety fryzjerskie</span></a></li> <li class="tab has-icon"><a href="#tab_pomocniki-fryzjerskie"><span>Pomocniki fryzjerskie</span></a></li> <li class="tab has-icon"><a href="#tab_meble-48h"><span>Meble 48h</span></a></li> </ul>

to keep it always shrink to minimun, again the table-layout (not set to fixed here ) seems to be the best option:为了让它始终缩小到最小, table-layout (此处未设置为fixed )似乎是最好的选择:

 ul { display: table; width:0;/* will shrink/expand to fit content anyway */ margin: auto; border-spacing: 1vw 0; } li { display: table-cell; } /* makup/see me */ li {border:1px solid;} ul { border-spacing: 1vw 0; } * {margin:0; padding:0; box-sizing:border-box; }
 <ul class="nav nav-line-bottom nav-normal nav-size-normal nav-center"> <li class="tab active has-icon"><a href="#tab_meble-fryzjerskie"><span>Meble fryzjerskie</span></a></li> <li class="tab has-icon"><a href="#tab_fotele-fryzjerskie"><span>Fotele fryzjerskie</span></a></li> <li class="tab has-icon"><a href="#tab_myjnie-fryzjerskie"><span>Myjnie fryzjerskie</span></a></li> <li class="tab has-icon"><a href="#tab_konsolety-fryzjerskie"><span>Konsolety fryzjerskie</span></a></li> <li class="tab has-icon"><a href="#tab_pomocniki-fryzjerskie"><span>Pomocniki fryzjerskie</span></a></li> <li class="tab has-icon"><a href="#tab_meble-48h"><span>Meble 48h</span></a></li> </ul>

Run both snippets in full page to see different behavior.在整页中运行两个片段以查看不同的行为。

Note also, that some padding on your original code could also work to set your wrapping point earlier另请注意,原始代码上的一些填充也可以用于更早地设置包装点


from your update on codepen, the table-layout can be used only on li too.从您对 codepen 的更新来看,表格布局也只能在 li 上使用。

 .nav>li { display: inline-table; } @media (max-width: 480px) {.nav>li { width: 0; border: solid; } } /* very simplified css*/
 <ul class="nav nav-line-bottom nav-normal nav-size-normal nav-center"> <li class="tab active has-icon"><a href="#tab_meble-fryzjerskie"><span>Meble fryzjerskie</span></a></li> <li class="tab has-icon"><a href="#tab_fotele-fryzjerskie"><span>Fotele fryzjerskie</span></a></li> <li class="tab has-icon"><a href="#tab_myjnie-fryzjerskie"><span>Myjnie fryzjerskie</span></a></li> <li class="tab has-icon"><a href="#tab_konsolety-fryzjerskie"><span>Konsolety fryzjerskie</span></a></li> <li class="tab has-icon"><a href="#tab_pomocniki-fryzjerskie"><span>Pomocniki fryzjerskie</span></a></li> <li class="tab has-icon"><a href="#tab_meble-48h"><span>Meble 48h</span></a></li> </ul>

I would insert a <br> tag with a class attached that showed / hid the <br> depending on screen size.我会插入一个带有 class 的<br>标签,根据屏幕尺寸显示/隐藏<br>

Example:例子:

HTML: HTML:

<p>FirstName<br class="line-break">LastName</p>

CSS: CSS:

/* Default for mobiles */
.line-break {
    display: block;
}

/* For tablets/desktops */
@media only screen and (min-width: 600px) {
    .line-break {
        display: none;
    }
}

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

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