不少时候咱们会有下面的场景,以下图中所显示的那样。点击1区域(从图上看1区域包含2区域)和2区域跳转不一样的连接。css
正常的代码结构应该是:html
<ul> <li> <a href="#1"> <div>内容1区域 <a href="#2"> <div>按钮2</div> </a> </div> </a> </li> </ul>
可是上面的代码浏览器的编译结果是下面这样html5
很明显能够发现,浏览器的渲染结果并非咱们想要的结果。那么是为何呢?css3
根据 W3C 规范,a 标签是否是嵌套 a 标签的。若是出现 a 标签嵌套 a 标签的状况就会将 a 标签内的 a 标签渲染在外部。git
其实按照设计图上虽然是包含的关系,可是咱们能够按照下面的方式布局,经过定位解决,不一样的跳转问题。github
<ul> <li> <a href="#1"> <div>内容1区域 </div> </a> <a href="#2"> <div>按钮2</div> </a> </li> </ul>
编写 css 的时候,都会遇到选择器优先级的问题。这里给出一个优先级列表web
div{ font-size:12px !important; //!important 的优先级最高,并且比内联的样式的优先级高 }
那么除了 important 以外的选择器呢?chrome
元素 | 权重 |
---|---|
内联样式 | 1000 |
ID选择器 | 100 |
类选择器(包括属性选择器和伪类) | 10 |
元素(标签)和伪元素选择器 | 1 |
结合符和通配符 | 0 |
根据上面的选择器的权重列表,就对咱们在编写 css 的过程当中对样式优先级有一个比较清晰的计算方法浏览器
.img-list > li { width: 32rem; /*权重=11*/ } .img-btn-list li:first-child { margin-left: 0; /*权重=21*/ } .v-list a>span:nth-child(1) { margin-right: .7rem; /*权重=22*/ }
flex
布局的一些优势思考:工具
flex
(弹性盒)布局一个最大的优势就是解决不一样移动设备的适配问题。
由于flex
与具体的单位无关性 ,因此能够解决不一样项目间单位不统一,可是又须要引用公用样式的需求。
问题2的参考网站:天猫 h5页面。 淘宝 h5 页面全站使用
rem
单位适配,而天猫页面有百分比,rem 单位的混用。
固然 flex 解决上面的问题还有一个问题就是浏览器的兼容性。若是本身的网站或者是 H5页面须要兼容低版本的浏览器,咱们能够参考使用百分比单位解决适配的问题。
参考网站:京东 h5页面(全站使用百分比单位解决多设备适配的问题)。
body{ -webkit-overflow-scrolling:touch; }
2.1 改变元素位置使用 css3 新属性,触发 GPU (硬件加速)辅助渲染动画 扩展阅读点这里
2.2 使用 chrome 开发者工具,查看动画元素是否形成周围大量 DOM 节点的重排(reflow),若是是则对动画元素使用 absolute 定位,脱离所在文档流,减小对周围元素的影响。
2.3 对要作动画的元素使用backface-visibility
,opacity
,perspective
这里属性主要是设置动画元素只渲染面向用户的一面。减小动画渲染对系统性能的消耗。
{ -webkit-backface-visibility:hidden; backface-visibility:hidden; -webkit-perspective: 1000; perspective: 1000; }