如何根据屏幕尺寸/浏览器拟合标签?

时间:2016-03-08 16:53:09

标签: html css

我有一个4个标签,我在下面显示。它随着屏幕尺寸的变化和不同的浏览器而不断移动。每次在不同的计算机上打开它时,我都会看到 about.html ,它不会停留在单行选项卡上。我需要不断更改我的width:303px

实际上我需要在不同的计算机和浏览器上减少它。什么是最好的解决方法,以便它与其余选项卡保持一条线。

CSS

 ul 
 {
  list-style-type: none;
  margin: 0;
  padding: 0;
  overflow: hidden;
 }

 li 
 {
   float: left;
 }


a:link, a:visited {
  display: block;
  width:303px;
  font-weight: bold;
  color: #FFFFFF;
  background-color: #98bf21;
  text-align: center;
  padding: 4px;
  text-decoration: none;
  text-transform: uppercase;
}

HTML

<ul>
  <li><a href="index.html">Home</a></li>
  <li><a href="offers.html">Offers</a></li>
  <li><a href="contact.html">Contact</a><li>
  <li><a href="links.html">Links</a></li>
  <li><a href="about.html">About us</a></li>
</ul>
<br>
<br>

2 个答案:

答案 0 :(得分:1)

您有几个选项会将这些 显式宽度(%或实际px / em等值)对齐并对齐:

CSS表格(绿色版) - Support IE8 and above

ul.table {
  display: table;
  table-layout: fixed;
  width: 100%;
}

ul.table li {
  display: table-cell;
}

Flexbox (梅花版) - Support IE10 and above

ul.flex {
  display: flex;
}

ul.flex li {
  flex:1;
}

两者的演示

ul {
  list-style-type: none;
  margin: 0;
  padding: 0;
  overflow: hidden;
  margin-bottom: 1em;
}
ul.table {
  display: table;
  table-layout: fixed;
  width: 100%;
}
ul.table li {
  display: table-cell;
}
ul.flex {
  display: flex;
}
ul.flex li {
  flex: 1;
}
ul.flex a {
  background: plum;
}
a:link,
a:visited {
  display: block;
  font-weight: bold;
  color: #FFFFFF;
  background-color: #98bf21;
  text-align: center;
  padding: 4px;
  text-decoration: none;
  text-transform: uppercase;
}
<ul class="table">
  <li><a href="index.html">Home</a>
  </li>
  <li><a href="offers.html">Offers</a>
  </li>
  <li><a href="contact.html">Contact</a>
  </li>
  <li><a href="links.html">Links</a>
  </li>
  <li><a href="about.html">About us</a>
  </li>
</ul>

<ul class="flex">
  <li><a href="index.html">Home</a>
  </li>
  <li><a href="offers.html">Offers</a>
  </li>
  <li><a href="contact.html">Contact</a>
  </li>
  <li><a href="links.html">Links</a>
  </li>
  <li><a href="about.html">About us</a>
  </li>
</ul>

注意:这不是一站式解决方案。在某些时候,屏幕可能不够宽,无法容纳所有文本。那时你需要媒体查询。

答案 1 :(得分:0)

您可以使用calc()功能....

width: calc(100% / X);

X 是标签数量。

您也可以使用....

width: calc((100% / X) - Ypx);

Y 是标签之间所需的填充,边距或空格的总和。

因此,对于4个标签,其中margin: 0 5px;和它们之间的1px边框,您可以使用:

width: calc((100% / 4) - 48px);

More info here