了解CSS

第二章 CSS——控制网页的样式与布局



一、什么是 CSS?

  • CSS 指的是层叠样式表* (Cascading Style Sheets)
  • CSS 描述了如何在屏幕、纸张或其他媒体上显示 HTML 元素
  • CSS 节省了大量工作。它可以同时控制多张网页的布局
  • 外部样式表存储在 CSS 文件中

二、引入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>
    <!-- 4.引入外部CSS文件,标签与样式分离,易于观看,适合大文件,项目级别的 -->
    <link rel="stylesheet" href="./测试.css">
    <!-- 3.当前文件嵌入CSS代码,标签与样式分离,易于观看,但只适合小类型文件,大型文件操作也很麻烦 -->
    <style>
        /* 要给哪个元素设置样式,就要先选中哪个元素 */
        span{
            /* 字号 */
            font-size: 20px;
            /* 文本类型,可以设置电脑上已经安装的字体,没有安装的字体包显示不出来,字体包可以到网上下载,但多数时候需要收费 */
            font-family: "楷体";
            /* 文本加粗,可以通过数值控制,100-900,数值越大字体越粗,如果想明显的看到加粗效果,那么值最少是600 */
            font-weight: 600;
            /* 文本颜色 */
            color: blue;
            /* 背景颜色 */
            background-color: lightgray;
            /* 字符间距 */
            letter-spacing: 20px;
            /* 添加下(上)划线→删除线,也可以设置下划线的样式,实线、虚线、双实线 */
            text-decoration: line-through dashed;
        }
    </style>
</head>
<body>
    <!-- 1.早期的CSS书写方法,现在基本不用 -->
    <img src="../publicImages/景色/icon1.webp" width="300px" height="160px">
    <!-- 2.内联样式,把style写在标签里,能直观的看到当前标签的样式,但是书写比较麻烦,也不易于观看 -->
    <img src="../publicImages/景色/icon2.webp" style="width: 300px; height: 160px;">
    <br>
    <span>CSS学习</span>
    <div>欢迎学习CSS</div>

</body>
</html>

三、选择器

选择器的语法结构:

选择器名{
   属性名1:属性值;   
   属性名2:属性值;
   .......
   属性名n:属性值;

1.基本选择器

类型用法说明
标签选择器p{ }使同一标签的元素拥有相同的样式
类选择器.class{ }使不同的网页元素拥有相同的样式
id选择器#id{ }精确控制某个元素的具体样式

代码如下(示例):

<!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{
            /* 字号默认是16px */
            font-size: 10px;
        }

        /* 类选择器可以选中页面中具有相同类名的元素,类选择器前面要加. */
        .container{
            color: red;
        }

        .fonts{
            font-family: "隶书";
        }

        /* id选择器可以选中页面中具有相同id的元素,id选择器前面要加# */
        #import{
            letter-spacing: 3px;
        }
        /* 一个元素只能有1个id,多设置会使其他的样式失效 */
        #ceshi{
            text-decoration: line-through;
        }
    </style>
</head>
<body>
    <div id="import">基本选择器包括标签(元素)选择器、类选择器、id选择器</div>
    <!-- 类名,id名设置的要有意义,不要用a,b,c这些单一的字母 -->
    <!-- 一个元素可以有多个类名,每个类名中间用空格分隔 -->
    <div class="container fonts">选择器是使用CSS语法设置元素样式的重要工具,通过选择器可以选中body里面的任意一个或一组元素</div>
    <span class="container" id="import">CSS选择器与JS的dom和JQ选择器是一样的,所以选择器的使用贯穿整个前端的语法</span>
</body>
</html>

2.复合选择器

并集选择器语法结构:

选择器1,选择器2,...{
	属性:属性值;
}

并集选择器之间用逗号(,)连接

交集选择器语法结构:

选择器1选择器2...{
	属性:属性值;
}

交集选择器之间没有任何连接符号

后代选择器语法结构:

选择器1 选择器2 ...{
	属性:属性值;
}

后代选择器是一种多个用空格分隔的选择器,别称包含选择器。

子代选择器语法结构:

选择器1 > 选择器2{
	属性:属性值;
}

子代选择器仅是指它的直接后代,或者你可以理解为作用于子元素的第一代后代。

后代选择器与子代选择器的区别: 子选择器(child selector)仅是指它的直接后代,或者你可以理解为作用于子元素的第一代后代。 而后代选择器是作用于所有子后代元素。 后代选择器通过空格来进行选择,而子选择器是通过“>”进行选择。

理解:后代选择器选择的是儿子,孙子,…父亲以下的后代都会被选中;子代选择器选择的只有父亲的儿子。

<!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>
        /* 通配符选择器,可以选中页面中所有的标签,优先级比较低 */
        *{
            font-family: "楷体";
        }

        /* 并集选择器,可以组合多个不同元素统一设置样式,中间用逗号分隔 */
        /* 组合并集选择器的元素可以是其他任意单一的选择器 */
        h1,
        h2,
        h3,
        h4,
        .font_red,
        #font_red {
            color: red;
        }

        ul {
            /* 取消无序列表前面的圆点 */
            list-style: none;
        }

        /* 交集选择器,可以选中同一元素且具有相同属性及属性值的标签 */
        /* 两部分组成,左边是元素,右边是类或者id,两部分限制,使元素选择的更加精确 */
        li.font_big {
            font-size: 20px;
        }

        /* 后代选择器 */
        /* 1.以空格连接后代选择器,会选中父元素下面的所有层级里相同的标签 */
        ul li {
            width: 180px;
            height: 40px;
            line-height: 40px;
            text-align: center;
            background-color: lavenderblush;
        }

        /* 2.以逗号连接后代选择器,只会选中子元素里相同的标签 */
        /* 这里没有选中123,会加粗是因为继承了父元素的样式 */
        ul>li {
            font-weight: 600;
        }
        
    </style>
</head>

<body>
    <h1>蒹葭苍苍,</h1>
    <h2>白露为霜。</h2>
    <h3>所谓伊人,</h3>
    <h4>在水一方。</h4>
    <span class="font_red">溯洄从之,</span>
    <br>
    <b id="font_red">道阻且长。</b>
    <br>
    <span>溯游从之,</span>
    <br>
    <b class="font_big">宛在水中央。</b>
    <br>
    <ul>
        <li class="font_big">蒹葭萋萋,<li>123</li></li>
        <li>白露未晞。</li>
        <li class="font_big">所谓伊人,</li>
        <li>在水之湄。</li>
    </ul>
</body>

</html>

3.伪类选择器

         伪类选择器不属于选择器,它是让元素呈现动态效果的特殊属性。它指定了元素的某种状态。

伪类名用途
a:link设置超链接未被访问时的样式
a:active设置超链接被用户激活(在鼠标点击与释放之间)时的样式
a:visited设置超链接被访问后的样式
a:hover设置将鼠标指针移到超链接上时的样式
<!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>
        /* 伪类状态有4种,多数标签都可以设置伪类状态,常用:滑过 */
        /* 默认状态 */
        a:link{
            color: blue;
        }

        /* 鼠标滑过 */
        a:hover{
            color: rgb(244, 10, 10);
        }

        /* 点击时的状态 */
        a:active{
            color: yellowgreen;
            font-size: 24px;
        }

        /* 被访问后的状态 */
        a:visited{
            color: tomato;
        }

        div{
            width: 200px;
            height: 200px;
            background-color: lavender;
        }

        div:hover{
            background-color: rgb(160, 160, 245);
            /* 鼠标变手 */
            cursor: pointer;
        }

    </style>
</head>
<body>
    <a href="复合选择器.html">求点击</a>
    <div></div>
</body>
</html>

4.通用选择器

通用选择器是一种特殊类型的选择器,它用星号(*)来表示选择器的名称,可以定义所有网页元素的显示格式。通用选择器涉及范围较广,一般用于清除页面中元素的边距。

<!DOCTYPE html>
<head>
<meta charset="UTF-8">
<title>通用选择器</title>
<style>
	*{
		/* 内边距 */
	 	 padding: 0;
	 	 /* 外边距 */
	 	 margin: 0;
	  }
 </style>
<head>
<body>
</body>

</html>

5.选择器的优先级

         选择器的优先级是指当有多个选择器作用于同一HTML文档的同一元素时,即多个选择器的作用范围发生重叠时,CSS的处理方式。

CSS规定选择器的优先级从高到低为: 行内样式 > id选择器 > 类选择器 > 标签选择器
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>
        /* 元素选择器 */
        div{
            width: 300px;
            height: 300px;
            /* 可以用!important提升优先级,也叫权重 */
            background-color: red !important;
        }

        /* 类选择器 */
        .bg_color{
            background-color: blue;
        }

        /* id选择器 */
        #bg_color{
            background-color: green;
        }

    </style>
</head>
<body>
    <!-- !important可以提升权重 -->
    <!-- 内联样式 > id选择器 > 类选择器 > 元素选择器 -->
    <div class="bg_color" id="bg_color" style="background-color: pink;"></div>
</body>
</html>

四、常用符号

符号HTML代码
"&quot;
'&apos;
&&amp;
<&lt;
>&gt;
¥&yen;
©&copy;
®&reg;
空格&nbsp;
<!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>字符实体</title>
    <style>
        p {
            text-decoration: underline;
        }
    </style>
</head>

<body>
    <!-- 代码里的空格在网页里只会显示一个,所以要想增大两个字之间的距离,就需要使用到字符实体 -->
    <!-- 英文空格 &nbsp; -->
    <p>人的眼睛&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;看到的颜色有两种</p>
    <!-- 中文空格 &#X3000; -->
    <p>人的眼睛&#X3000;&#X3000;看到的颜色有两种&#X3000;&#X3000;</p>

    <!-- 浏览器会自动解析HTML标签,解析后所显示的只有内容,要想看到标签,只能使用字符实体,一般用于展示核心代码 -->
    <!-- 
        ctrl + f 弹出查找框
        1.输入要替换的值
        2.输出替换后的值
        3.根据需求进行单个替换或全部替换
     -->

    &lt;p&gt;
    &lt;br&gt;
    &lt;span&gt;毕竟西湖六月中,&lt;/span&gt;
    &lt;br&gt;
    &lt;i&gt;风光不与四时同。&lt;/i&gt;
    &lt;br&gt;
    &lt;b&gt;接天莲叶无穷碧,&lt;/b&gt;
    &lt;br&gt;
    &lt;s&gt;映日荷花别样红。&lt;/s&gt;
    &lt;br&gt;
    &lt;/p&gt;
    
</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>
</head>
<body>
    <!-- 在网页当中,列表一般用来显示同一级别的信息 -->
    <!-- 常用的列表有两种:无序列表,有序列表;除此之外,还有定义列表 -->
    <!-- 无序列表,每个li标签最前面默认显示一个圆点,如果不想显示圆点,可以改变type的属性值 -->
    <!-- square 方块  circle 空心圆 -->
    <ul type="circle">
        <li>秒杀</li>
        <li>优惠券</li>
        <li>PLUS会员</li>
        <li>品牌闪购</li>
        <!-- 标签是可以嵌套使用的,但是要注意层级,通常外围标签是容器类,里层标签视情况而定 -->
        <li><a href="https://auction.jd.com/home.html">更多</a></li>
    </ul>

    <!-- 有序列表,默认会给所有li进行排序,显示其数字顺序,可以通过改变type的值来改变排序规则,也可以改变初始数值 -->
    <!-- start的值只能设置数字,表示依据type的排序规则,从第几个开始计数 -->
    <ol type="A" start="3">
        <li>京东家电</li>
        <li>京东超市</li>
        <li>京东生鲜</li>
    </ol>

    <!-- 定义列表,一般显示磁盘上的空间 -->
    <dl>
        <dt>C盘</dt>
        <dd>Windows</dd>
        <dd>user</dd>
        <dt>D盘</dt>
        <dd>game</dd>
        <dd>music</dd>
    </dl>



</body>
</html>

六、元素

1.元素转换

<!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>
        span{
            font-size: 18px;
            color: blue;
            width: 260px;
            height: 150px;
            background-color: red;
            /* 把当前元素转换成块元素 */
            /* display: block; */
            /* 把当前元素转换成行内块元素 */
            display: inline-block;
        }
        
        div{
            width: 260px;
            height: 150px;
            background-color: lawngreen;
            /* 把当前元素转换成行元素 */
            /* display: inline; */
            /* 把当前元素转换成行内块元素 */
            display: inline-block;
        }
    </style>
</head>
<body>
    <span>昨夜斗回北,</span>
    <span>今朝岁起东。</span>
    <div>11</div>
    <div>11</div>
</body>
</html>

2.元素隐藏

<!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: 500px;
            height: 500px;
            background-color: red;
            /* 隐藏当前元素,在当前页面直接删除该元素,其原本的位置会被其他元素占据 */
            /* display: none; */
            /* 透明度,取值范围:0-1,值越大越清晰,越小越模糊 */
            /* 当透明度为0时也能隐藏元素,但元素还依然占据原本的位置,不会被其他元素顶替 */
            opacity: 0;
        }

        
    </style>
</head>
<body>
    <div></div>
    <span>我年已强仕,无禄尚忧农。</span>
</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::before{
            /* content表示添加文本内容,要用引号引起来 */
            content: '这个是前缀';
            /* 在这里设置的样式都是针对于添加的前缀设置的 */
            color: red;
            font-size: 12px;
        }

        div::after{
            /* content表示添加文本内容,要用引号引起来 */
            content: '这个是后缀';
            /* 在这里设置的样式都是针对于添加的后缀设置的 */
            color: blue;
            font-size: 12px;
        }
    </style>
</head>
<body>
    <!-- 
        为什么使用点缀?
        1.首先点缀不是内容,如果把点缀的信息写在内容里,会污染内容,会导致百度、搜狗等搜索引擎在提取网页关键字或其他关键内容时受到干扰
        2.如果是服务器生成的文档或其他HTML标签,不方便修改标签内容,那我们就可以通过点缀来添加新的信息
        3.点缀的信息是可以单独控制其样式的,所以设置一些特殊内容的时候,会很便捷
     -->

    <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: 900px;
            height: 500px;
            /* 设置背景图片 */
            background-image: url(../publicImages/景色/bg_icon1.webp);
            /* 设置背景图片不重复显示 */
            background-repeat: no-repeat;
            /* 背景图片的尺寸 */
            /* 1个参数时表示横向竖向都占有固定的比例 */
            /* 2个参数时第一个参数表示水平方向的占比,第二个参数表示垂直方向的占比 */
            background-size: 100% 100%;
            /* 背景图片的偏移,第一个参数为横向偏移量,第二个参数为纵向偏移量 */
            /* background-position: 50% 50%; */
        }

        span{
            font-size: 22px;
            line-height: 30px;
            font-family: "楷体";
            color: rgb(154, 205, 222);
            font-weight: 600;
        }

        p{
            /* 首行缩进 */
            text-indent: 50px;
        }
    </style>
</head>
<body>
    
    <!-- 使用背景图片需要一个装在背景图的容器 -->
    <div>
        <!-- 背景图片是虚体,所以可以在容器内放置其他的元素,虚体不占实体字符 -->
        <span>田家占气候,共说此年丰。</span>
    </div>

    <p>十年陪伴,无限热爱!风靡全球的MOBA经典之作——《英雄联盟》正版手游预约正式开启!真正的5V5公平竞技对战,传承端游纯正体验
        。人气英雄,经典还原;公平竞技,实力至上;峡谷传说,掌心再现。</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>
        div{
            font-size: 20px;
            width: 300px;
            height: 200px;
            background-color: rgb(174, 208, 238);
            /* 1.删除溢出容器的文本 */
            /* overflow: hidden; */
            /* 2.给容器加一个上下的滚动条,来显示所有的文本 */
            overflow: scroll;
        }
    </style>
</head>

<body>
    <div>同时从另一个回答中我们看出,S23 Ultra很有可能会搭载目前传的沸沸扬扬的UFS4.0闪存,也就是说新三件套将会直接在S23 Ultra系列上作为标配产出。</div>
</body>

</html>

总结

了解什么是css,记住常用的三种引入css方法,三种基本选择器,常用的符号代码,熟练运用三种列表

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jiuyue_77

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值