响应式设计断点
responsive design breakpoints
我试图摆脱bootstrap,实际上我自己控制了我的断点。在我继续学习之前,我想知道我是否在正确的轨道上。那么这样做是否正确:
HTML:
<!DOCTYPE html>
<html>
<head>
<link type="text/css" rel="stylesheet" href="style.css"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<div id="container">
<img src="banner.png"/>
<section id="left-column">
<p>This is the left column</p>
</section>
<aside id="right-column">
<p>This is the right column</p>
</aside>
</div>
<!-- /Container -->
</body>
</html>
CSS:
#container {
width: 960px;
margin: 0px auto;
}
#left-column {
width: 700px;
float: left;
background-color: red;
}
#right-column {
width: 260px;
float: left;
background-color: blue;
}
/* Tablet & Computer */
@media screen and (max-width:959px) {
#container {
width:100%;
}
#left-column {
width: 70%;
}
#right-column {
width: 30%;
}
img {
width: 100%
}
}
/* Phone */
@media screen and (max-width:640px) {
#left-column {
width: 100%;
}
#right-column {
width: 100%;
}
}
/* Stop Scaling */
@media screen and (max-width:320px) {
#container {
width: 320px;
}
你可以那样做,但我建议使用 less 或 sass,否则会很乏味(而且你绝对应该也使用 autoprefixer!)。从技术上讲,您应该设置样式 类 而不是 id,因为这样会减少干扰。您可能想要添加一个最小宽度,并且您可能应该验证 70% + 30% 由于舍入问题永远不会超过 100%。
Flexbox 是 new/cool 制作网格的方式,参见例如https://css-tricks.com/snippets/css/a-guide-to-flexbox/, but that's just until we get proper grid layouts in css (e.g. https://css-tricks.com/snippets/css/complete-guide-grid/).
我认为使用媒体查询没有好坏之分,只要你想要它就可以了:)
Bootstrap 通过提供不同的断点应用于 mobile/tablet/desktop 以及不同的 class 名称来帮助您实现布局样式,但您可以自己完成通过使用没有 Bootstrap 的断点。 (请参阅此处有关 Bootstrap 的媒体查询信息:http://getbootstrap.com/css/#grid-media-queries)
所以你的做法是正确的。只需在此处关闭最后一个括号:
/* Stop Scaling */
@media screen and (max-width:320px) {
#container {
width: 320px;
}
}
此外,我更喜欢在移动设备上使用流动宽度 (%),因为它会占据屏幕的整个宽度。在你上次媒体查询的情况下,宽度 selected 是完全没用的(我不知道有多少设备会降低 320px 宽度)
在此处查看可帮助您 select 媒体查询的常用设备:
http://mydevice.io/devices/
你可以去掉 Bootstrap 但你可以在断点处使用他们的方法
也就是
超小型设备手机 <768px
小型设备 平板电脑 ≥768px
中型设备台式机 ≥992px
大型设备台式机≥1200px
您需要为列指定网格系统,而不是硬编码列宽
喜欢
.col1{
width:8.33333333%
}
.col2{
width:16.66666667%
}
.col3{
width:25%
}
.col4{
width:33.33333333%
}
.col5{
width:14.666667%
}
.col6{
width:50%
}
.col7{
width:58.33333333%
}
.col8{
width:66.6666667%
}
.col9{
width:75%
}
.col10{
width:83.33333333%
}
.col11{
width:91.6666666%
}
.col12{
width:100%
}
最后,您必须为列定义行,以避免由于列的浮动而导致高度冲突
.row{
margin-left:-15px;
margin-right:-15px;
}
.row{:after{
content:'';
display:block;
clear:both
}
.col{ //general properties of columns
padding:15px;
float:left;
}
更新: 如果你没有在 row
class 之后通过 clear:both;
清除浮动你会发现列的高度容器始终为 0,即使列有内容也是如此,因为浮点数从容器的高度减去元素的高度
您还需要给它 margin-left:-15px;
和 margin-right:-15px;
以使行的第一列和最后一列与页面内容对齐
我试图摆脱bootstrap,实际上我自己控制了我的断点。在我继续学习之前,我想知道我是否在正确的轨道上。那么这样做是否正确:
HTML:
<!DOCTYPE html>
<html>
<head>
<link type="text/css" rel="stylesheet" href="style.css"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<div id="container">
<img src="banner.png"/>
<section id="left-column">
<p>This is the left column</p>
</section>
<aside id="right-column">
<p>This is the right column</p>
</aside>
</div>
<!-- /Container -->
</body>
</html>
CSS:
#container {
width: 960px;
margin: 0px auto;
}
#left-column {
width: 700px;
float: left;
background-color: red;
}
#right-column {
width: 260px;
float: left;
background-color: blue;
}
/* Tablet & Computer */
@media screen and (max-width:959px) {
#container {
width:100%;
}
#left-column {
width: 70%;
}
#right-column {
width: 30%;
}
img {
width: 100%
}
}
/* Phone */
@media screen and (max-width:640px) {
#left-column {
width: 100%;
}
#right-column {
width: 100%;
}
}
/* Stop Scaling */
@media screen and (max-width:320px) {
#container {
width: 320px;
}
你可以那样做,但我建议使用 less 或 sass,否则会很乏味(而且你绝对应该也使用 autoprefixer!)。从技术上讲,您应该设置样式 类 而不是 id,因为这样会减少干扰。您可能想要添加一个最小宽度,并且您可能应该验证 70% + 30% 由于舍入问题永远不会超过 100%。
Flexbox 是 new/cool 制作网格的方式,参见例如https://css-tricks.com/snippets/css/a-guide-to-flexbox/, but that's just until we get proper grid layouts in css (e.g. https://css-tricks.com/snippets/css/complete-guide-grid/).
我认为使用媒体查询没有好坏之分,只要你想要它就可以了:)
Bootstrap 通过提供不同的断点应用于 mobile/tablet/desktop 以及不同的 class 名称来帮助您实现布局样式,但您可以自己完成通过使用没有 Bootstrap 的断点。 (请参阅此处有关 Bootstrap 的媒体查询信息:http://getbootstrap.com/css/#grid-media-queries)
所以你的做法是正确的。只需在此处关闭最后一个括号:
/* Stop Scaling */
@media screen and (max-width:320px) {
#container {
width: 320px;
}
}
此外,我更喜欢在移动设备上使用流动宽度 (%),因为它会占据屏幕的整个宽度。在你上次媒体查询的情况下,宽度 selected 是完全没用的(我不知道有多少设备会降低 320px 宽度)
在此处查看可帮助您 select 媒体查询的常用设备: http://mydevice.io/devices/
你可以去掉 Bootstrap 但你可以在断点处使用他们的方法
也就是
超小型设备手机 <768px
小型设备 平板电脑 ≥768px
中型设备台式机 ≥992px
大型设备台式机≥1200px
您需要为列指定网格系统,而不是硬编码列宽
喜欢
.col1{
width:8.33333333%
}
.col2{
width:16.66666667%
}
.col3{
width:25%
}
.col4{
width:33.33333333%
}
.col5{
width:14.666667%
}
.col6{
width:50%
}
.col7{
width:58.33333333%
}
.col8{
width:66.6666667%
}
.col9{
width:75%
}
.col10{
width:83.33333333%
}
.col11{
width:91.6666666%
}
.col12{
width:100%
}
最后,您必须为列定义行,以避免由于列的浮动而导致高度冲突
.row{
margin-left:-15px;
margin-right:-15px;
}
.row{:after{
content:'';
display:block;
clear:both
}
.col{ //general properties of columns
padding:15px;
float:left;
}
更新: 如果你没有在 row
class 之后通过 clear:both;
清除浮动你会发现列的高度容器始终为 0,即使列有内容也是如此,因为浮点数从容器的高度减去元素的高度
您还需要给它 margin-left:-15px;
和 margin-right:-15px;
以使行的第一列和最后一列与页面内容对齐