H5 Mosh教程笔记 - CSS简介

2022-08-17  本文已影响0人  Abububiu

H5 Mosh教程笔记

先列出教程中会用到的网站

网站H5规范验证网站
CSS格式规范验证网站
转义字符查询
免费图片下载网站
免费图片视频下载网站
浏览器HTML标签,CSS属性支持情况查询网站
CSS一致化工具安装
渐变色代码生成网站
CSS形状代码生成网站
字体网站fontsquirrel
字体网站fonts
字体网站myfonts

教程开始

· CSS

CSS是描述网站样式的文件,HTML专注页面元素,CSS专注元素以什么样式展示,分工明确。

CSS样式可以嵌入HTML文件,嵌入元素中,或者单独成为一个文件,供HTML页面引用,这里当然推荐使用CSS单独成为文件供HTML引用的方式,各自专注自己的事。

<!DOCTYPE html>
<html lang="en">
<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>Document</title>
    <!-- CSS样式文件引入方式 -->
    <link rel="stylesheet" href="../node_modules/normalize.css/normalize.css">
    <link rel="stylesheet" href="../css/style.css">
    <!-- HTML内嵌CSS -->
    <style>
        .yellowgreen {
            color: yellowgreen;
        }
    </style>
</head>
<body>
    <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Quia, optio!</p>
    <p class="yellowgreen">
        Lorem ipsum dolor sit amet consectetur adipisicing elit. Ullam, placeat.
    </p>
    <!-- 元素内嵌CSS -->
    <p style="color: gray;">
        Lorem ipsum dolor sit amet, consectetur adipisicing elit. Provident, temporibus!
    </p>
</body>
</html>
· 基础选择器
<!DOCTYPE html>
<html lang="en">
<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>Document</title>
    <style>
        /* 类型选择器,通过元素类型名字选取元素,这里的类型就是p标签*/
        /* 类型选择器会选中所有同样类型的元素,这里所有的p标签文字内容都会是orange(没有优先级更高的选择器前提下) */
        p {
            color: orange;
        }

        /* 类选择器,每个元素可以有一个或多个类,也就是元素里的class */
        /* 一个类也可以供多个元素使用,这样可以统一多个不同元素的样式 */
        .describe {
            color: yellowgreen;
        }

        /* ID选择器,每个元素可以且仅可以指定1个ID,1个ID能且仅能与1个元素绑定 */
        /* 精确选中选择器,不常用,或者说我用的少,更多的时候需要控制多个元素的样式 */
        #graytext {
            color: gray;
        }

        /* 属性选择器,更不常用的一种方式,通过标签及其属性的值来精确选择元素 */
        /* 以下是选择href=https://google.com的a标签,属性必须精确匹配 */
        /* 也可以有模式匹配,如以什么开头的(href^='xxxx'),或什么结尾的(href$='xxxxx'), */
        /* 或匹配单词的(href*='xxx') */
        a[href="https://google.com"] {
            color: darkorchid;
        }

        /* 从运行结果看,可能你也发现了,选择器也是有优先级的 */
        /* 类选择器和ID选择器就覆盖了类型选择器的样式 */
        /* 简单来说,作用范围越小的选择器,优先级越高 */
    </style>
</head>
<body>
    <p>
        Lorem ipsum dolor sit amet consectetur adipisicing elit. Animi, molestiae!
    </p>
    <p class="describe">
        Lorem ipsum dolor sit amet consectetur adipisicing elit. Sint, unde!
    </p>
    <p id="graytext">
        Lorem ipsum dolor sit amet consectetur adipisicing elit. Officia, saepe.
    </p>

    <a href="https://google.com" target="_blank">Google</a>
</body>
</html>
· 关系选择器
<!DOCTYPE html>
<html lang="en">
<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>Document</title>
    <!-- 关系选择器是依据元素的位置或层级来选择元素的 -->
    <style>
        /* 选择ID为products的元素里,所有后代中(也可以理解成嵌套在section里)的p元素 */
        /* 这就是依据元素的层级来选择,section标签里的2个p标签会被选中 */
        #products p {
            color: yellowgreen;
        }

        /* 选择ID为products的元素里,第一层嵌套的p标签 */
        /* 也就是section标签里的直接后代元素中选择p标签 */
        /* 并设置文本颜色为orange */
        #products > p {
            color: orange;
        }

        /* 选择ID为products的标签(section标签)后面紧跟着的第一个p标签 */
        /* 并设置文本颜色为darkorchid */
        #products + p {
            color: darkorchid;
        }

        /* 选择与ID为products标签同级的所有p标签 */
        /* 并设置文本颜色为darkgray */
        #products ~ p {
            color: darkgrey;
        }
        /* 关系选择器可以节省一些代码,不用声明很多类和ID */
        /* 但这种代码很脆弱,元素之间的关系一变,样式就失效了 */
    </style>
</head>
<body>
    <section id="products">
        <p>
            1 Lorem ipsum, dolor sit amet consectetur adipisicing elit. Nisi, soluta.
        </p>
        <p>
            2 Lorem ipsum, dolor sit amet consectetur adipisicing elit. Nisi, soluta.
        </p>
        <article>
            <p>
                3 Lorem ipsum dolor sit, amet consectetur adipisicing elit. Consequuntur, aut?
            </p>
        </article>
    </section>
    <p>
        4 Lorem ipsum dolor sit amet consectetur adipisicing elit. Quam, minima!
    </p>
    <p>
        5 Lorem ipsum dolor, sit amet consectetur adipisicing elit. Cum, quam.
    </p>
    
</body>
</html>
· 伪类选择器

伪类选择器是浏览器内置的选择器,并不是CSS的标准,伪类选择器的使用可以减少一下代码量,很方便,但跟浏览器的实现关联较大了

<!DOCTYPE html>
<html lang="en">
<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>Document</title>
    <style>
        /* 在article的子元素中,找到p标签第一次出现的位置,并将文字颜色变成orange */
        article p:first-of-type {
            color: orange;
        }

        /* 在article的子元素中,找到p标签最后一次出现的位置,并将文字颜色变成darkorchid */
        article p:last-of-type {
            color:darkorchid 
        }

        /* 在ul里的li,找到奇数(odd)位置的li,并设置文本颜色为yellowgreen */
        /* nth-child的参数可以是odd,event, 3n(这里不一定是3n,也可以是5n,6n等,意思是间隔多少元素算一次有效选中)*/
        ul li:nth-child(odd){
            color: yellowgreen;
        }

        /* a标签在点击过以后的颜色 */
        a:visited {
            color: dodgerblue;
        }

        /* a标签在未点击过时的颜色 */
        a:link {
            color: darkorchid;
        }

        /* a标签鼠标悬停颜色 */
        a:hover {
            color: orange;
        }

        /* 使用tab键让a标签获取焦点时的颜色 */
        a:focus {
            color: orange;
        }
    </style>
</head>
<body>
    <article>
        <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Porro, asperiores.</p>
        <p>Lorem ipsum dolor sit amet.</p>
    </article>
    <a href="https://google.com">Google</a>
    <ul>
        <li>Item 1</li>
        <li>Item 2</li>
        <li>Item 3</li>
        <li>Item 4</li>
        <li>Item 5</li>
    </ul>
</body>
</html>
· 伪元素选择器

伪元素选择器可简化对元素的样式修改

<!DOCTYPE html>
<html lang="en">
<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>Document</title>
    <style>
        /* 使用p标签的伪元素选择器,选择p标签内容的首字母,设置文字样式,以简化代码,替代span标签 */
        p::first-letter {
            font-size: 140%;
            font-weight: bold;
        }

        /* 改变p标签内容的第一行的字体样式 */
        p::first-line {
            font-weight: bold;
        }

        /* 改变p标签内容被选中后的背景色 */
        p::selection {
            background-color: dodgerblue;
        }

        /* 在p标签的内容前增加content的内容,并可以改变元素类型为块级元素 */
        p::before {
            content: '...';
            display: block;
        }

        /* 在p标签内容后增加content的内容,并可以改变元素类型为块级元素 */
        p::after {
            content: '...';
            display: block;
        }
    </style>
</head>
<body>
    <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Fugit delectus vitae saepe perspiciatis nemo sint dolores possimus esse tempora facilis.</p>
</body>
</html>
· 选择器优先级

选择器的优先级是 ID选择器 > 类、属性选择器 > 元素选择器
在vscode中,会显示选择器的权重,从左到右分别是ID选择器,类、属性选择器,元素选择器,分别代表百位,十位,个位,数值越大,权重越高,高权重的会覆盖低权重的


image.png

如果需要强制使被覆盖的选择器生效,有两种方式

  1. 使用!important关键字(尽量少使用或不使用,难维护)
    如下代码中第一个p标签的样式会生效:
p {
  color: red !important;
}

p {
  color: green;
}
  1. 使用选择器组合的方式,提高权重,给需要提高权重的选择器增加一个ID选择器(尽量少组合,一个标签的选择器组合太多,也不好维护)
p #paragraph{
  color: red;
}

p {
  color: green;
}
· CSS继承

选择器的内容是可以继承的,某个元素的子元素是会继承父元素的部分(比如文字等,有些是不会继承的,不用记,用多了就只知道了)样式,也可以主动选择不继承

<!DOCTYPE html>
<html lang="en">
<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>Document</title>
    <style>
        p {
            color: orange;
            border: 1px solid black;
        }

        strong {
            /* strong默认会继承p的color,也可以指定不继承 */
            /* 使用color的初始值,而不是继承来的值 */
            color: initial;
            /* border默认不继承,但也可以强制使用继承的值 */
            border: inherit;
        }
    </style>
</head>
<body>
    <p>Lorem ipsum dolor, sit amet <strong>consectetur</strong> adipisicing elit. Laudantium, vitae!</p>
</body>
</html>
· 颜色

颜色的表示在CSS中有HEX,RGB,RGBA,HSL,HSLA

<!DOCTYPE html>
<html lang="en">
<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>Document</title>
    <style>
        div {
            width: 200px;
            height: 200px;
            /* HEX 十六进制表示法 */
            background-color: #4287f5;
            /* rgb(红,绿,蓝)表示法 */
            background-color: rgb(66, 135, 245);
            /* 带透明度的rgb表示法,rgba */
            background-color: rgba(66, 135, 245, 0.8);
            /* hsl(标准色盘偏移度,饱和度,亮度)表示法 */
            background-color: hsl(217, 90, 61);
            /* 带透明度的hsl表示法 */
            background-color: hsla(217, 90, 61, 0.5);
        }
    </style>
</head>
<body>
    <div>

    </div>
</body>
</html>
· 渐变
<!DOCTYPE html>
<html lang="en">
<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>Document</title>
    <style>
        div { 
            width: 200px;
            height: 200px;
            /* 线性渐变的配置linear-gradient(渐变方向,颜色1,颜色2。。。颜色n) */
            background-image: linear-gradient(to right, rgb(78, 78, 188), yellow);
            background-image: linear-gradient(45deg, rgb(78, 78, 188), yellow, rgb(252, 43, 43));

            /* 径向渐变配置(渐变方向,颜色1,颜色2,颜色3) */
            background: radial-gradient(circle, orange, yellow, green);
            background: radial-gradient(circle at top left, orange, yellow, green);
        }
    </style>
</head>
<body>
    <div>

    </div>
</body>
</html>
· 边框
<!DOCTYPE html>
<html lang="en">
<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>Document</title>
    <style>
        div {
            width: 200px;
            height: 200px;
            /* border线的大小,border线的样式,border线的颜色 */
            border: 1px solid black;
            border: 1px dotted royalblue;
            border: 1px dashed greenyellow;
            border-top: 1px solid darkorchid;
            /* 上,右,下,左 */
            border-width: 1, 1, 1, 1;
            /* 圆角属性,设置为宽度的一半是正圆,设置100%也是正圆,推荐使用100%,不易出错 */
            border-radius: 100%;
        }
    </style>
</head>
<body>
    <div>

    </div>
</body>
</html>
· 阴影
<!DOCTYPE html>
<html lang="en">
<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>Document</title>
    <style>
        div {
            width: 200px;
            height: 200px;
            background: dodgerblue;
            /* 参数为正数,则阴影向右偏移,参数为负数,则阴影向左*/
            box-shadow: 10px;

            /* 参数为正数,则阴影向右偏移,参数为负数,则阴影向左*/
            /* 在x方向和y方向上同时移动阴影 */
            box-shadow: 10px 10px;

            /* 参数为正数,则阴影向右偏移,参数为负数,则阴影向左*/
            /* 阴影颜色为灰色 */
            box-shadow: 10px 10px gray;

            /* 参数为正数,则阴影向右偏移,参数为负数,则阴影向左*/
            /* x轴方向偏移,y轴方向偏移,阴影模糊程度,阴影颜色,用rgba作为阴影颜色更好,有透明度,更容易透出底色,显得更和谐一些 */
            box-shadow: 10px 10px 10px gray;
            
        }
    </style>
</head>
<body>
    <div>

    </div>
</body>
</html>

下一篇
H5 Mosh教程笔记 - 排版简介
上一篇
H5 Mosh教程笔记 - 常用标签简介

上一篇下一篇

猜你喜欢

热点阅读