WebVincent 2020-07-09
为什么需要默认样式?
在html发展初期,还没有css文件,另外,css文件可能不能加载,所以这里默认样式就是必要的。
默认样式带来的问题,会影响我们写css,需要我们覆盖默认样式。还有一些默认样式是很难覆盖的,比如下拉框的默认样式,是很难去覆盖的。
DEMO2-7.html <!DOCTYPE html> <!-- html元素是block元素,是有默认样式的,display=block,并且默认width是100%,height随着内容变化 --> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <!-- 浏览器默认给body元素添加了margin=8px,并且body元素也是block元素 --> <body> <div>DIV元素</div> <!-- ul元素默认有个padding=40px,所以没有和div元素左对齐 --> <ul> <!-- li元素默认带有一个小圆点,这是通过display:list-item来设置的,默认小圆点的位置是在li的外部,这是通过list-style-position的默认值outside设置的 --> <li>LI元素</li> <li>LI元素</li> </ul> <!-- padding为0时,小圆点就被覆盖了 --> <ul style="padding: 0;"> <li>LI元素</li> <li>LI元素</li> </ul> <!-- padding为0时,左边距没有了 --> <ul style="padding: 0;"> <!-- 把list-style-position的值由没有值outside修改为inside, --> <li style="list-style-position: inside;">LI元素</li> <li style="list-style-position: inside;">LI元素</li> </ul> </body> </html>
既然元素默认样式有这么多问题,我们通常会进行CSS Reset(实践总结)。
https://meyerweb.com/eric/tools/css/reset/ 比如把ol, ul { list-style: none; }
https://yuilibrary.com/yui/docs/cssreset/ 大同小异
还有一个经常使用的。直接把所有margin和padding为0
<style> * { margin: 0; padding: 0; } </style>
CSS Reset的思路是把一些带来麻烦的默认样式干掉,麻烦包括默认样式不好看,还有浏览器对于默认样式不统一。
关于浏览器对于html元素的默认样式不统一的解决方案,css reset是直接清0,直接干掉。
还有另外一种思路,把不统一的样式换成统一的,只是Normalize.css这个css库干的事。