2.CSS样式

CSS样式

CSS,专门用来“美化”HTML标签

<!--快速了解-->
<img src="..." style="height: 100px;" />
<div style="color: red;">中国联通</div>

CSS 应用方式

在标签上
<img src="..." style="height: 100px;" />
<div style="color: red;">中国联通</div>
在 head 标签的 style 上
<head>
    <meta charset="UTF-8">
    <title>登录</title>
    <style>
        .c1{
            color: red;
        }
        .c2{
            height: 50px;
        }
    </style>
</head>
<body>
<h1 class="c1">用户登录</h1>
<form accept="/login" method="post">
    用户名:<input class="c2" type="text" name="username" />
    密码:<input class="c2" type="text" name="password" />
    <input class="c2" type="submit" value="登录" />
</form>
写到文件中
<!--common.css-->

.c1 {
    color: red;
}
.c2 {
    height: 100px;
}

调用common.css

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>用户注册</title>
    <link rel="stylesheet" href="/static/css/common.css" />
</head>
<body>
    <div><h3 class="xx">用户注册</h3></div>
</body>

选择器

  • ID选择器

    #c1 {
    color: red;
    }
    
    <div id='c1'></div>
  • 类选择器

    .c1 {
    color: red;
    }
    
    <div class='c1'></div>
  • 标签选择器

    div{
    color: red;
    }
    
    <div>xxx</div>
    li{
    color: red;
    }
    
    <ul>
    <li>xxx</li>
    </ul>
属性选择器
<head>
    <title>Document</title>
    <link rel="stylesheet" href="/static/commons.css">
    <style>
        input[type="text"]{      <!-- 所有的text类型的input都会生效 -->
        border: 1px solid red;
        }
        .v1[xx="123"]{
            color: gold;    <!-- 橙色 -->
        }
    </style>
</head>

<body>
...
    <input class="c2" type="text" name="username" />
    <input class="c2" type="password" name="password" />
    <div class="v1" xx="123">a</div>
    <div class="v1" xx="456">b</div>
    <div class="v1" xx="789">c</div>
...
</body>
后代选择器

这个选择器很有意思,你可以指定标签让它下面对应的标签全部生效,也可以指定标签让他下面的n级标签生效

<style>
    .zz h2{
        color:chartreuse;
    }
</style>
</head>

<body>

    <div class="zz" >
        <div>
            <h2>我是div里面的h2</h2>
        </div>
        <h2>我是div外面的h2</h2>
...

<!--如果只想让第一层的h1生效,可以添加>号-->
<style>
    .zz > h2{
        color:chartreuse;
    }
</style>
关于样式的覆盖问题

当一个标签引用了多个 css 样式时,可能会遇到样式属性重复的问题

观察到,c3生效,而c2没有生效,这是因为c3在c2的下面,会将上面的c2属性覆盖掉

如果不想让上面的被覆盖掉怎么办呢?

可以在对应的属性后面添加!important

<style>
    .c2 {
        color: darkgoldenrod;
        font-size: 10px;
        border: 2px solid red;
    }

    .c3 {
        color:hotpink;
        font-size: 8px;
        border: 2px solid green;
    }
</style>

<body>
    <div class="c2 c3">我是天才</div>
</body>

<style>
    .c2 {
        color: darkgoldenrod !important;
        font-size: 10px  !important;
        border: 2px solid red;
    }

    .c3 {
        color:hotpink;
        font-size: 8px;
        border: 2px solid green;
    }
</style>

样式

高度和宽度

注意事项:

  • 支持百分比
  • 行内标签: 默认无效
  • 块级标签: 默认有效(右边的剩余空白区域也会被占用)
.c4 {
    height: 300px;
    width: 500px;
}
块级和行内标签

display:inline-block 使行内标签对 height 和 width 生效

<style>
    .c4 {
            display: inline-block;
            height: 300px;
            width: 500px;
            border: 1px solid red;
        }
    </style>
    ...
    <body>
        <span class="c4">联通</span>
    </body>

块级与行内标签的转换

<div style="display: inline;">移动</div>
<span style="display: block;">联通</span>
字体和对齐方式

设置字体颜色/大小/粗细/字体样式

<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        .c1 {
            color: #11633a;                   /* 字体颜色 */
            font-size: 20px;                  /* 字体大小 */
            font-weight: 600;                 /* 字体粗细 */
            font-family: Microsoft Yahei;     /* 字体样式 */
            text-align: center;               /* 水平方向居中 */
            line-height: 50px;                /* 垂直方向居中 */
            border: 1px solid red;            /* 边框 */
        }
    </style>
</head>
浮动

如果在块级标签中,加入了float属性,那么这个块级标签将不会再占用一整行,而是自己有多大就占用多大

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        .item {
            float: left;
            width: 280px;
            height: 170px;
            border: 1px solid red;
        }

    </style>
</head>
<body>
    <div>
        <div class="item"></div>
        <div class="item"></div>
        <div class="item"></div>
    </div>
</body>
</html>

如果你让标签浮动起来之后,就会脱离文档流。

例如下面的例子中,我们给div的父标签赋予了一个蓝色的背景,但是你不会看到蓝色背景。因为他被浮动的div字标签挡住了。

解决办法: 在同级子标签的最下面添加 style="clear: both;"

<body>
    <div style="background-color: blue;    /* 背景颜色 */">
        <div class="item"></div>
        <div class="item"></div>
        <div class="item"></div>
    </div>
    <div> 你好呀 </div>
</body>
<body>
    <div style="background-color: blue;">
        <div class="item"></div>
        <div class="item"></div>
        <div class="item"></div>
        <div style="clear: both;"></div>    <!-- 解决浮动标签被挡住 -->
    </div>
    <div> 你好呀 </div>
</body>
内边距

padding-top | padding-left | padding-right | padding-botton

下面的四个上下左右的padding可以简写为padding: 20px 20px 20px 20px,顺序为上右下左(顺时针方向)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        .outer {
            border: 1px solid red;
            height: 200px;
            width: 200px;

            padding-top: 20px;
            padding-left: 20px;
            padding-right: 20px;
            padding-bottom: 20px;
            /* padding: 20px 20px 20px 20px */
        }

    </style>
</head>
<body>
    <div class="outer">
        <div>hello</div>
        <div>world</div>

    </div>
</body>
</html>
外边距
<body>
    <div style="height: 200px; background-color: aquamarine; margin-left: 20px;"></div>
    <div style="height: 200px; background-color:blueviolet; margin-top: 20px;"></div>
</body>

hover

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>小米商城</title>
    <style>
        .c1:hover{
            color: orange;
            font-size: 50px;
        }

        .c2{
            height: 300px;
            width: 500px;
            border: 1px solid red;
        }

        .c2:hover{
            border: 1px solid green;
        }

        .download{
            display: none;
        }

        .app:hover .download{
            display: block;
        }

        .app:hover .title{
            color: red;
        }
    </style>
</head>

<body>
    <div class="c1">中国电信</div>
    <div class="c2">中国移动</div>
    <div class="app">
        <div class="title">下载app</div>
        <div class="download">
            <img src="D:\git-python\前端\templates\img\logo-mi2.png" alt="">
        </div>
    </div>
</body>
</html>

after

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .c1::after{
            content: "哈哈哈";
        }

        .clearfix::after{      /*常用于清除float: left 标签浮动脱离文档流*/
            content: "";
            display: block;
            clear: both;
        }

        .item{
            float: left;
        }
    </style>
</head>

<body>
    <div class="c1">中国电信</div>
    <div class="clearfix">
        <div class="item">1</div>
        <div class="item">1</div>
        <div class="item">1</div>
    </div>
</body>
</html>

<!-- 中国电信哈哈哈 -->

position

  • fixed 固定
    • 固定在窗口的某个位置
  • relative 相对
  • absolute 绝对
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        body{
            margin: 0;
        }

        .back{
            position: fixed;
            width: 60px;
            height: 60px;
            border: 1px solid red;

            right: 10px;
            bottom: 10px;
        }

        .c1{
            height: 300px;
            width: 500px;
            border: 1px solid red;
            margin: 100px;
            position: relative;
        }

        .c1 .c2{
            height: 59px;
            width: 59px;
            background-color: aqua;
            position: absolute;

            right: 100px;
            bottom: 100px;
        }

        .dialog{
            position: fixed;
            height: 300px;
            width: 500px;
            background-color: white;

            left: 0;
            right: 0;
            bottom: 0;
            top: 0;
            margin: auto auto;
            /* top: 200px; */

            z-index: 1000;
        }

        /* 幕布 */
        .mask{
            background-color: black;
            position: fixed;

            left: 0;
            right: 0;
            bottom: 0;
            top: 0;

            opacity: 0.5;

            z-index: 999;
        }
    </style>
</head>

<body>
    <div style="height: 1000px;">position演示</div>
    <div class="mask"></div>
    <div class="dialog" style="font-size: 100px;">永远居中显示</div>
    <div class="back">返回顶部</div>
    <div class="c1">
        <div class="c2"></div>
    </div>
</body>
</html>

<!-- 网页右下角返回顶部模块的使用方法 -->

border

  • solid 实线
  • dotted 虚线
  • border-bottom: 6px solid transparent; 透明
  • border-radius: 2px; 圆角
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        body{
            margin: 0;
        }

        .c1{
            height: 200px;
            width: 500px;
            background-color: rgb(100, 96, 96);

            border: 3px dotted red;
            border-left: 6px solid transparent;
            border-right: 6px dotted black;
            border-radius: 2px;
            border-bottom: 6px solid transparent;  /*透明*/

            margin: 200px;
            font-size: 50px;
            font-weight: 500;
        }

        .c1:hover{
            border-left: 10px dotted brown;
            border-right: 10px dotted green;
            border-bottom: 6px solid orangered;
        }
    </style>
</head>

<body>
    <div class="c1">菜单</div>

</body>
</html>

总结

  • bode标签,默认有一个边距,造成页面四边都有白色间隙,如何去除?
    body{
      margin: 0;
    }
  • 内容居中
    • 文本居中,文本会在这个区域居中
      <div style="width: 200px; text-align: center;">哈哈哈</div>
    • 区域居中,自己要有宽度 + margin-left: auto;margin-right: auto
      .container{
      width: 1226px;
      margin: 0 auto;
      }
      <div class="container">
      <a>哈哈哈</a>
      </div>
  • 父标签没有高度或没有宽度,可以被子标签支撑起来
  • 如果存在浮动,一定要加入以下代码,清除元素左右两侧的浮动效果
    <div style="clear: both;"></div>
  • a标签是行内标签,行内标签的高度、内外边距,配置后默认无效,使用 display: inline-block; 后生效
  • 垂直方向居中
    • 文本 + line-height
    • 图片 + margin边距
  • a标签默认有下划线,使用 text-decoration: none; 配置去除下划线
  • 鼠标悬停变色 hover
    .c1:hover{
      color: white;
    }
    .c2 a:hover{
      color: black;
    }
  • 设置透明度: opacity: 0.7; 范围0-1
  • 设置标签显示层次,数值大的显示在上层:z-index: 1000;