允许文本在 css 菜单中换行

发布于 2024-10-31 16:42:27 字数 459 浏览 3 评论 0原文

我有一个使用无序列表来创建菜单的模板。 参见此处

当我使用 Google 翻译翻译网站时,如果翻译太长,菜单就会中断,导致浮动列表项下拉。将其翻译成法语似乎会导致问题。

参见此处

如果文本太重,有没有办法可以强制文本换行渴望菜单吗?

我不介意是否必须将无序列表更改为其他内容,但我不想使用表格。

I have a template that uses an unordered list to create the menu. See here

When I translate the website using Google translate the menu breaks if the translations are too long, causing the floated list items to drop down. Translating it into French seem to cause the problem.

See here

Is there a way I can force the text to wrap if it is too long for the menu?

I don't mind if I have to change the unordered list to something else, but I would prefer not to use a table.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

稀香 2024-11-07 16:42:27

使用 css

word-wrap 的 word-wrap 属性:break-word;

use word-wrap property of css

word-wrap: break-word;

街道布景 2024-11-07 16:42:27

简短版本:我们将使用 display: table-cell

长版本是.. long:

  • .access 上,删除 padding 规则。
  • .sf-menu 上,删除 float: left 并添加 display: table
  • .sf-menu li 上,删除 float: left 并添加 display: table-cellvertical-align: middle代码>.
  • #header#footer 上,添加 position:relative
  • .access 上,删除 height: 32pxmargin-top: -32px 并添加 position:absolute 和 <代码>宽度:100%。
  • #header .access 上,添加bottom: 0
  • border-leftsf-menu a 移至 sf-menu li
  • 将选择器 .sf-menu a.first 更改为 .sf-menu .first
  • 这部分不太好,但要恢复左侧(和右侧)的 20px padding,请在开头添加一个额外的 li :
  •  
  • ;最后:

  •  
  • 。您可能不需要  。您需要对 #footer 执行相同的操作。

  • 要停止“padding”li 上的 :hover,请添加如下内容:

    .sf-menu li.noHover:hover {
        背景:无!重要
    }
    
  • On #footer< /code>,添加 padding-top: 48px

这就是一切(除非我在某个地方搞砸了),除了 IE6/7 支持。如果您想要这样,您将必须应用我的修复程序来发布新版本(如果您愿意,可以在临时新文件夹中)。当我必须先应用所有这些更改才能正确测试它时,尝试修复 IE6/7 的工作量太大了。

The short version: we're going to use display: table-cell.

The long version is.. long:

  • On .access, remove the padding rule.
  • On .sf-menu, remove float: left and add display: table.
  • On .sf-menu li, remove float: left and add display: table-cell and vertical-align: middle.
  • On #header and #footer, add position: relative.
  • On .access, remove height: 32px and margin-top: -32px and add position: absolute and width: 100%.
  • On #header .access, add bottom: 0.
  • Move the border-left from sf-menu a to sf-menu li.
  • Change the selector .sf-menu a.first to .sf-menu .first.
  • This part isn't great, but to get back that 20px padding on the left (and right), add an extra li at the start: <li class="noHover" style="width: 20px; border-left: 0"> </li>; and at the end: <li class="noHover" style="width: 20px; border-left: 0"> </li>. You might not need the  s. You'll need to do the same thing with #footer.
  • To stop the :hover on the "padding" lis, add something like this:

    .sf-menu li.noHover:hover {
        background: none !important
    }
    
  • On #footer, add padding-top: 48px.

That's everything (unless I screwed up somewhere), except for IE6/7 support. If you want that, you're going to have to put a new version up with my fixes applied (can be in a temporary new folder if you like). It's too much work to attempt to fix IE6/7 when I have to apply all those changes first to test it properly.

梦在深巷 2024-11-07 16:42:27

@Pranay 指向正确的方向,但您需要将宽度设置为 li 而不是 ul!例如:

ul.sf-menu li {
   width: 80px; /* make this the maximum width possible! */
   word-wrap: break-word;
}

并且在菜单ul之后插入一个清除div:

<div class="clear"></div>

其中clear类定义为:

.clear {
   clear: both;
   width: 0;
   height: 0;
}

@Pranay pointed to the right direction but you need to set the width to the lis not the ul! so for example:

ul.sf-menu li {
   width: 80px; /* make this the maximum width possible! */
   word-wrap: break-word;
}

And insert a clearing div right after the menu ul:

<div class="clear"></div>

Where the clear class is defined as:

.clear {
   clear: both;
   width: 0;
   height: 0;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文