HTML元素的默认样式

为什么需要默认样式?

在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库干的事。

相关推荐