响应式设计断点

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; 以使行的第一列和最后一列与页面内容对齐