博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
借鉴bootstrap的方法,快速实现响应式开发
阅读量:5811 次
发布时间:2019-06-18

本文共 4697 字,大约阅读时间需要 15 分钟。

响应式开发

注意:任何框架都是一个辅助手段,只需借鉴其中的核心思想,把其中核心的东西提炼出来即可。不要因为,提到响应式就想到只能够用bootstrap来实现,框架现有的东西是可以提高我们的效率,但是其内部场景的冗余就很注定只是一种懒人方法,要想攀登高峰,只有一步一步脚印来。然后,不断提炼,实力和技术才能够不断进步。


目前项目是响应式开发,虽然会感觉各种节点的冗余,但是谁让咱是个打工仔呢?
周知响应式的开发的基础是媒体查询,就是这玩意
@media,正对不同的屏幕尺寸进行的适配就是响应式了。
为在项目上有较好的编码体现,直接套用bootstrap的代码。通过使用这些工具class可以根据屏幕和不同的媒体查询显示或隐藏页面内容,加速针对移动设备的开发。

尝试使用这些class并避免创建同一个网站的不同版本,从而能够完善不同设备上的显示效果。响应式工具目前只是针对块级元素, 不支持inline元素和表格元素。

类名控制如下:

通过单独或联合使用以下列出的class,可以针对不同屏幕尺寸隐藏或显示页面内容。

超小屏幕手机 (<768px) 小屏幕平板 (≥768px) 中等屏幕桌面 (≥992px) 大屏幕桌面 (≥1200px)
.visible-xs 可见
.visible-sm 可见
.visible-md 可见
.visible-lg 可见
.hidden-xs 可见 可见 可见
.hidden-sm 可见 可见 可见
.hidden-md 可见 可见 可见
.hidden-lg 可见 可见 可见

样式的抽离

@media值的大小,可以根据公司的适配要求,自己改写

.visible-xs,.visible-sm,.visible-md,.visible-lg {  display: none !important;}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block {  display: none !important;}@media (max-width: 767px) {  .visible-xs {    display: block !important;  }  table.visible-xs {    display: table !important;  }  tr.visible-xs {    display: table-row !important;  }  th.visible-xs,  td.visible-xs {    display: table-cell !important;  }}@media (max-width: 767px) {  .visible-xs-block {    display: block !important;  }}@media (max-width: 767px) {  .visible-xs-inline {    display: inline !important;  }}@media (max-width: 767px) {  .visible-xs-inline-block {    display: inline-block !important;  }}@media (min-width: 768px) and (max-width: 991px) {  .visible-sm {    display: block !important;  }  table.visible-sm {    display: table !important;  }  tr.visible-sm {    display: table-row !important;  }  th.visible-sm,  td.visible-sm {    display: table-cell !important;  }}@media (min-width: 768px) and (max-width: 991px) {  .visible-sm-block {    display: block !important;  }}@media (min-width: 768px) and (max-width: 991px) {  .visible-sm-inline {    display: inline !important;  }}@media (min-width: 768px) and (max-width: 991px) {  .visible-sm-inline-block {    display: inline-block !important;  }}@media (min-width: 992px) and (max-width: 1199px) {  .visible-md {    display: block !important;  }  table.visible-md {    display: table !important;  }  tr.visible-md {    display: table-row !important;  }  th.visible-md,  td.visible-md {    display: table-cell !important;  }}@media (min-width: 992px) and (max-width: 1199px) {  .visible-md-block {    display: block !important;  }}@media (min-width: 992px) and (max-width: 1199px) {  .visible-md-inline {    display: inline !important;  }}@media (min-width: 992px) and (max-width: 1199px) {  .visible-md-inline-block {    display: inline-block !important;  }}@media (min-width: 1200px) {  .visible-lg {    display: block !important;  }  table.visible-lg {    display: table !important;  }  tr.visible-lg {    display: table-row !important;  }  th.visible-lg,  td.visible-lg {    display: table-cell !important;  }}@media (min-width: 1200px) {  .visible-lg-block {    display: block !important;  }}@media (min-width: 1200px) {  .visible-lg-inline {    display: inline !important;  }}@media (min-width: 1200px) {  .visible-lg-inline-block {    display: inline-block !important;  }}@media (max-width: 767px) {  .hidden-xs {    display: none !important;  }}@media (min-width: 768px) and (max-width: 991px) {  .hidden-sm {    display: none !important;  }}@media (min-width: 992px) and (max-width: 1199px) {  .hidden-md {    display: none !important;  }}@media (min-width: 1200px) {  .hidden-lg {    display: none !important;  }}

那么,要控制元素在超小屏幕和小屏幕下的状态,则可以使用

.yourClassName.visible-xs{  /*超小屏幕下的样式...*/}.yourClassName.visible-sm{  /*小屏幕下的样式...*/}

注意 :bootstrap版本是3样式代码


2017.10.3总结

目前项目上用css是使用面向对象的方式实现的,即.scss/.less,我们一个模块的样式设计就是一个最外层一个盒子,只有一个节点。类似于下面的形式:

.feature-container{    >.a{       // .a样式描述        >.b{        // .b 样式描述            // .c .d. ...        }    }   }

这样的书写形式具有dom的树状结构,和方便开发与排错以及后期的维护。(然而,项目上是没有很好的约束,我感觉是一个败笔)一个盒子的所有样式规则是嵌入的形式。我们最期待的形式就是在某个位置上能够全部搞定这个部分的样式,不要到处乱写,很没有把空性。但是,因为@media这个玩意,在css之中,前面的是不可以有层级关系,不能有那种父子选择器、后代选择器的那种东西。这就很尴尬了,这与我们之前的代码优雅的观念很矛盾。


我们知道,我们写css常常会有一些技巧,比如将子代的通用可继承的样式会在dom树上提升,直接给这类子元素的祖先设置即可。同类设置,是一个技巧。
市面上,有很多公司pc和移动端都没有通过响应式来实现的。其中很重要的一项就是因为,样式的文件的不方便管理。那么,我现在提出的解决方案就是以
@media来区分终端大小,实现不同尺寸的设备,达到需求。
重点:@media之后的各个尺寸的设置,需要和一般样式的设置一样,和dom树结构一样,保持一致,这样才算优雅。
具体如下:
.feature-container{    // 不同尺寸设备的通用样式设定}@media (min-width:500px){    // >500px尺寸的设备的独有样式}@media (max-width:500px){    // < 500px 尺寸设备的独有样式}

是不是很优雅,设计得蛮巧妙?未经允许,不让转。

转载于:https://www.cnblogs.com/lakeInHeart/p/7534559.html

你可能感兴趣的文章
数据库基础
查看>>
表格排序
查看>>
关于Android四大组件的学习总结
查看>>
java只能的round,ceil,floor方法的使用
查看>>
由于无法创建应用程序域,因此未能执行请求。错误: 0x80070002 系统找不到指定的文件...
查看>>
新开的博客,为自己祝贺一下
查看>>
puppet任务计划
查看>>
【CQOI2011】放棋子
查看>>
采用JXL包进行EXCEL数据写入操作
查看>>
一周总结
查看>>
将txt文件转化为json进行操作
查看>>
线性表4 - 数据结构和算法09
查看>>
C语言数据类型char
查看>>
Online Patching--EBS R12.2最大的改进
查看>>
Binary Search Tree Iterator leetcode
查看>>
Oracle性能优化--DBMS_PROFILER
查看>>
uva-317-找规律
查看>>
Event事件的兼容性(转)
查看>>
我的2014-相对奢侈的生活
查看>>
zoj 2412 dfs 求连通分量的个数
查看>>