使用完整浏览器可用宽度的简单方法(CSS 响应式设计)
Simple way of using the full browser available width (CSS Responsive Design)
3 div。
正文边距为 10px.
图片在最下面
我希望 div 具有相同的宽度,两侧的边距相同,同时 covering/using 整个浏览器的宽度,无论大小(台式机、平板电脑、移动设备)
以下是我使用 pourcentage 所做的以及我相信的事情:
" 全浏览器宽度为 100%
如果div的边距是10px,body的边距是10px那么
div 的宽度约为 30%。
让我们试试 30%。
它也适合 - 空白 space。
让我们试试 30.5%。
空白space,两边不相等
让我们输入 32%。
等"
但我经常在右侧得到额外的空白 space 或一个 div 向下,因为它实际上太宽了。
有更简单的方法吗?特性?
谢谢。
设计:
媒体查询:
我认为解决这个问题的最佳方法是为每个 div 设置容器元素,因此结构如下:
<div class="container-full">
<div class="container-third">
<div class="content">
Hello world
</div>
</div>
</div>
.container-full{
width: 100%;
}
.container-third{
width: 33.33%;
padding: 10px;
}
.content{
width: 100%;
}
使用填充,而不是边距。确保使用 box-sizing: border-box
您的问题源于您混合了相对单位和绝对单位 - 像素是绝对单位,因为 10px
始终是 10px
,但百分比是相对于屏幕宽度的,因此,无论您多么接近屏幕的整个宽度,只要您更改屏幕的宽度,所有值都会发生变化。
你有(至少)两个选择:
首先,将所有单位切换为百分比,以便每个 测量值都是相对于屏幕宽度的。换句话说,如果你使用基于百分比的利润率,你就会确切地知道你可以为每件事分配多少space。
或者,如果您确实需要边距是绝对像素宽度,请使用 CSS calc
:
CSS 的这一特性让您可以轻松混合单位类型,并让浏览器进行数学计算。
例如:
width: calc(33.333% - 20px);
将使 div
的样式占据屏幕宽度的三分之一,减去左侧 10px
边距和右侧 10px
边距的宽度。
如果所有三个 div
都具有此宽度,则占用的总 space 将等于屏幕的 100%,并且 space 占所有边距.
(如果你想让第一个和最后一个div分别在左边和右边没有边距,只需更改计算以匹配!)
额外小费!请记住,代码中的 white-space 会在您的元素之间添加 spaces,因此如果您将所有内容设置为完全填充 100% 宽度,这些额外的 spaces 可能仍会导致您的项目如果你没有处理这个就中断
display:flex
已经得到广泛支持,因此您可以依赖它而不是浮点数。
如果您不对所有元素使用 box-sizing:border-box;
- 您至少可以对有问题的 div 使用 10px
填充。
这是 sass:
.container {
display:flex;
& > div{
flex:0 0 33.33%;
padding: 10px;
box-sizing: border-box;
}
}
或者您可以在 div 之间使用百分比边距。
.container div{
width:30%;
float:left;
margin-right:5%;
}
.container div:last-child{
margin-right:0;
}
3 div。 正文边距为 10px.
图片在最下面
我希望 div 具有相同的宽度,两侧的边距相同,同时 covering/using 整个浏览器的宽度,无论大小(台式机、平板电脑、移动设备)
以下是我使用 pourcentage 所做的以及我相信的事情:
" 全浏览器宽度为 100%
如果div的边距是10px,body的边距是10px那么
div 的宽度约为 30%。
让我们试试 30%。
它也适合 - 空白 space。
让我们试试 30.5%。
空白space,两边不相等
让我们输入 32%。
等"
但我经常在右侧得到额外的空白 space 或一个 div 向下,因为它实际上太宽了。
有更简单的方法吗?特性?
谢谢。
设计:
媒体查询:
我认为解决这个问题的最佳方法是为每个 div 设置容器元素,因此结构如下:
<div class="container-full">
<div class="container-third">
<div class="content">
Hello world
</div>
</div>
</div>
.container-full{
width: 100%;
}
.container-third{
width: 33.33%;
padding: 10px;
}
.content{
width: 100%;
}
使用填充,而不是边距。确保使用 box-sizing: border-box
您的问题源于您混合了相对单位和绝对单位 - 像素是绝对单位,因为 10px
始终是 10px
,但百分比是相对于屏幕宽度的,因此,无论您多么接近屏幕的整个宽度,只要您更改屏幕的宽度,所有值都会发生变化。
你有(至少)两个选择:
首先,将所有单位切换为百分比,以便每个 测量值都是相对于屏幕宽度的。换句话说,如果你使用基于百分比的利润率,你就会确切地知道你可以为每件事分配多少space。
或者,如果您确实需要边距是绝对像素宽度,请使用 CSS calc
:
CSS 的这一特性让您可以轻松混合单位类型,并让浏览器进行数学计算。
例如:
width: calc(33.333% - 20px);
将使 div
的样式占据屏幕宽度的三分之一,减去左侧 10px
边距和右侧 10px
边距的宽度。
如果所有三个 div
都具有此宽度,则占用的总 space 将等于屏幕的 100%,并且 space 占所有边距.
(如果你想让第一个和最后一个div分别在左边和右边没有边距,只需更改计算以匹配!)
额外小费!请记住,代码中的 white-space 会在您的元素之间添加 spaces,因此如果您将所有内容设置为完全填充 100% 宽度,这些额外的 spaces 可能仍会导致您的项目如果你没有处理这个就中断
display:flex
已经得到广泛支持,因此您可以依赖它而不是浮点数。
如果您不对所有元素使用 box-sizing:border-box;
- 您至少可以对有问题的 div 使用 10px
填充。
这是 sass:
.container {
display:flex;
& > div{
flex:0 0 33.33%;
padding: 10px;
box-sizing: border-box;
}
}
或者您可以在 div 之间使用百分比边距。
.container div{
width:30%;
float:left;
margin-right:5%;
}
.container div:last-child{
margin-right:0;
}