DAY 4 | 自学前端第四天

知道自己在做什么很重要

今天学习 emmet语法、CSS复合选择器、CSS元素显示模式、CSS的背景。

Emmet语法

  • 快速生成HTML结构语法
  1. 生成标签,直接输标签名,按tab; div---tab——<div></div>
  2. 生成多个相同标签,加上*即可; div*3——三个<div></div>
  3. 父子标签,可以用>;  ul >li 即可
  4. 兄弟标签, 用+ ;div+p
  5. 带类名或者ID名的,直接写 .demo 或者 #two tab 键就可以了
  6. div名有顺序,可以用自增符号$
  7. div {我知道} tab ——<div>我知道</div>
  • 快速生成CSS样式语法
  1.  比如  w200  按tab 可以生成 width:200px;
  2. 比如   lh26  按tab 可以生成 line-height:26px;
  • 快速格式化代码
  1. 右键格式化文档
  2. 也可以设置当我们保存页面的时候自动格式化代码:文件——首选项——设置——搜索format——勾选On Save

CSS复合选择器 

复合选择器是由两个或多个基础选择器,通过不同的方式组合而成的。常用的复合选择器包括:后代选择器子选择器并集选择器伪类选择器等等。

1 后代选择器(重要):也叫包含选择器,可以选择父元素里的所有子元素。  

.nav a

   <title>后代选择器</title>
    <style>
        /* 我要把ol的li选出来换颜色 */
        ol li {
            color: aqua;
        }

        ul li {
            font-size: 20px;
        }

        .bra li a {
            text-decoration: none;
        }

        .nav li a {
            color: rgb(134, 76, 4);
        }
    </style>
</head>

<body>
    <ol>
        <li>我是ol的孩子</li>
    </ol>
    <ol class="bra">
        <li><a href="#">我是ol的孙子</a></li>
    </ol>
    <ol class="nav">
        <li><a href="#">我是ol的孙子</a></li>
    </ol>
    <ul>
        <li>我是ul的孩子</li>
    </ul>
</body>

2 子选择器(重要):也叫子元素选择器,可以选择最近一级元素,亲儿子元素

.nav>a

 <title>子元素选择器</title>
    <style>
        /* .nav a {
            color: red;
        } */
        .nav>a {
            color: red;
        }
    </style>
</head>

<body>
    <div class="nav">
        <a href="#">
            我是儿子
        </a>
        <p>
            <a href="#">我是孙子</a>
        </p>
    </div>
</body>
  • 课堂练习:(后代选择器和子元素选择器)
 <title>课堂练习</title>
    <style>
        /* .nav ul li a {
            color: red;
        } */
        .hot>a {
            color: red;
        }
    </style>
</head>

<body>
    <!-- <div class="nav">
        <ul>
            <li><a href="#">百度</a></li>
            <li><a href="#">百度</a></li>
        </ul>
    </div> -->
    <div class="hot">
        <a href="#">大肘子</a>
        <ul>
            <li> <a href="#">猪头</a></li>
            <li> <a href="#">猪尾巴</a></li>
        </ul>
    </div>
</body>
  • 3 并集选择器(重要):可以选择多组标签,同时为他们定义相同的样式。 通常用于集体声明。用英文逗号 , 进行分割。最后一个选择器不用加逗号。

.nav,

a

        div,
        p {
            color: pink;
        }
  • 4 链接伪类选择器: 
  1. a:link ——选择所有未被访问的链接
  2. a:visited——选择所有已被访问的链接
  3. a:hover——选择鼠标指针位于其上的链接
  4. a:active——选择活动链接(鼠标按下未弹起的链接
<title>链接伪类选择器</title>
    <style>
        /* 未访问的链接 a :link  把没有点击过的(访问过的)链接选出来 */
        a:link {
            color: red;
            text-decoration: none;
        }

        /* a visited 选择访问过的链接 */
        a:visited {
            color: green;
        }

        /* a hover 选择鼠标经过的那个链接 */
        a:hover {
            color: rgb(127, 8, 238);
        }

        /* a:active 选择的是我们鼠标正在按下但没有弹起鼠标的那个链接 */
        a:active {
            color: pink;
        }
    </style>
</head>

<body>
    <a href="#">小猪佩奇</a>
    <a href="http://www.XXXXX.com">未知的胖胖</a>
</body>
  • 注意事项:
  1. 为了确保生效,请按照顺序声明:link visited hover active
  2. 因为a链接在浏览器中具有默认样式,所以我们实际工作中都需要给链接单独指定样式。
  3. 链接伪类选择器实际工作开发中的写法:
  <title>实际开发伪类选择器</title>
    <style>
        a {
            color: black;
            text-decoration: none;
            font-weight: 700;
        }

        a:hover {
            color: blue;
        }
    </style>
</head>

<body>
    <a href="#">我是一个链接</a>
</body>
  • 5 focus伪类选择器用于选取焦点的表单元素
 <title>focus伪类选择器</title>
    <style>
        input:focus {
            background-color: rgb(247, 214, 219);
            color: white;
        }
    </style>
</head>

<body>
    <input type="text">
    <input type="text">
    <input type="text">
</body>

CSS 的元素显示模式

1 什么是元素的显示模式 

就是元素(标签)以什么方式进行显示,比如<div>自己占一行,比如一行可以放多个<span>。

HTML元素一般分为块元素行内元素

2 元素显示模式的分类

  • 块元素:<h1>--<h6>、<p>、<div>、<ul>、<ol>、<li>

特点

  1. 独占一行;
  2. 高度宽度外边距内边距都可以控制;
  3. 宽度默认是容器的100%;
  4. 是一个盒子,可以装行内或者块状元素。

注意:

  1. 文字类元素内不能使用块状元素;
  2. <p>标签主要放文字,所以<p>里不能放块状元素,特别不能放<div>
  3. 同理,<h1>--<h6>等都是文字类块级标签,里面也不能放其他块级元素。
    <title>块级元素</title>
    <style>
        div {
            height: 50px;
            width: 200px;
            background-color: pink;
        }
    </style>
</head>

<body>
    <div>独占一行就是我</div>我想和你一行
    <!-- p和h里面放文字内容,不要放div
    <p>
    <div>这里有点问题</div>
    </p> -->
</body>
  • 行内元素:<span><a><strong><b><em><i><del><s><ins><u>,也叫内联元素

特点:

  1. 相邻行内元素在一行,一行显示多个;
  2. 宽度,高度直接设置是无效的;
  3. 默认高度是它本身内容的宽度;
  4. 行内元素只能容纳文本或其他行内元素。

注意:

  1. <a>链接里不能再放链接;
  2. 特殊情况下<a>里面可以放块级元素,但是给<a>转换一下块级模式最安全。
  <title>行内元素</title>
    <style>
        span {
            /* 高和宽直接设置是无效的,默认宽度为本身内容的宽度 */
            width: 100px;
            height: 200px;
            background-color: hotpink;
        }
    </style>
</head>

<body>
    <!-- 行内元素只能容纳文本或其他行内元素 -->
    <span>胖胖是个</span>
    <strong>葡萄籽</strong>
</body>
  • 行内块元素:<img /><input /><td>,同时具有块元素和行内元素的特点。 

特点:

  1. 和相邻行内块在一行,但之间有空白间隙,一行显示多个;(行内元素特点)
  2. 默认宽度是本身内容宽度;(行内元素特点)
  3. 高度,行高,内外边距可以控制。(块级元素特点)

3 元素显示模式的转换

一个模式的元素需要另外一个模式的特性。比如增加<a>的触发范围。

  • 转换为块元素display:block;
  • 转换为行内元素display:inline;
  • 转换为行内块元素display:inline-block;
  <title>元素显示模式转换</title>
    <style>
        a {
            width: 100px;
            height: 50px;
            background-color: hotpink;
            text-decoration: none;
            /* 把行内元素 a 转换为块元素 */
            display: block;
        }

        div {
            width: 200px;
            height: 100px;
            /* 把块元素 div 转换为行内元素 */
            display: inline;
        }

        span {
            width: 100px;
            height: 80px;
            background-color: pink;
            /* 把行内元素 span 转换为行内块元素 */
            display: inline-block;
        }
    </style>
</head>

<body>
    <a href="#">金星阿姨</a>
    <a href="#">金星阿姨</a>
    <div>我是块级元素</div>
    <div>我是块级元素</div>
    <span>把行内元素转换为行内块元素</span>
    <span>把行内元素转换为行内块元素</span>
</body>

4 一个小工具的使用 snipaste

snipaste——截图工具,可以截图贴到屏幕上

快捷方式:

  1. F1+fn可以截图
  2. F3+fn 桌面置顶
  3. 点击图片,Alt取色,shift切换取色模式
  4. ESC取消图片显示

5 案例:简洁版小米侧边栏

 <title>案例题</title>
    <style>
        a {
            text-decoration: none;
            color: white;
            background-color: rgb(112, 75, 75);
            display: block;
            width: 200px;
            height: 25px;
            text-indent: 2em;
        }

        a:hover {
            background-color: orange;
        }
    </style>
</head>

<body>
    <!-- 可以不用div,转换成块级元素本身可以独占一行 -->
    <a href="#">手机电话卡</a>
    <a href="#">电视 盒子</a>
    <a href="#">笔记本 平板</a>
    <a href="#">出行 穿戴</a>
    <a href="#">路由器</a>
    <a href="#">健康 儿童</a>
    <a href="#">耳机 音响</a>
</body>

6  单行文字垂直居中(小技巧)

CSS没有提供文字垂直居中的代码——解决方案: 让文字行高等于盒子高度

 <title>单行文字垂直居中</title>
    <style>
        div {
            width: 200px;
            height: 30px;
            background-color: pink;
            /* 文字行高line-height等于盒子行高height即可垂直居中 */
            line-height: 30px;
        }
    </style>
</head>

<body>
    <div>我要垂直居中</div>
</body>

CSS的背景

背景属性可以设置背景颜色、背景图片、背景平铺、背景图片位置、背景图像固定等。

1 背景颜色

background-color:transparent :默认背景颜色是透明的。

<title>背景颜色</title>
    <style>
        div {
            width: 100px;
            height: 50px;
            /* 默认背景颜色是透明的
            background-color: transparent; */
            background-color: pink;
        }
    </style>
</head>

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

背景图片

background-image:描述元素的背景图片。便于控制位置。

background-image: url(图片路径)
 <title>背景图片</title>
    <style>
        div {
            width: 1000px;
            height: 600px;
            /* 不要拉下URL */
            background-image: url(images/wlop.jpg);
        }
    </style>
</head>

<body>
    <div>

    </div>
</body>

背景平铺

background-repeat:进行平铺。

 <title>背景平铺</title>
    <style>
        div {
            width: 2000px;
            height: 1000px;
            background-color: pink;
            background-image: url(images/wlop.jpg);
            /* 不进行背景平铺 */
            /* background-repeat: no-repeat; */

            /* 默认情况下,背景图片是平铺的 */
            /* background-repeat: repeat; */

            /* 沿着X轴平铺 */
            /* background-repeat: repeat-x; */

            /* 沿着Y轴平铺 */
            background-repeat: repeat-y;
        }
    </style>
</head>

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

 

背景图片位置(重要)

background-position:改变图片在背景中的位置。

background-position: x y ;

参数代表 x 坐标和 y 坐标。可以使用方位名词或者精确单位

方位名词:

  1. 如果两个值都是方位名词,前后顺序无关,效果一样;
  2. 如果指定一个值是方位名词,另一个值省略,则第二个值默认居中对齐。

<title>背景图片位置-方位名词</title>
    <style>
        div {
            width: 500px;
            height: 500px;
            background-image: url(images/wlop.jpg);
            /* 1 如果两个值都是方位名词,前后顺序无关,效果一样 */
            /* background-position: right center; */
            /* background-position: center right; */

            /* 1 如果指定一个值是方位名词,另一个值省略,则第二个值默认居中对齐 */
            /* background-position: right; */
            background-position: top;
        }
    </style>
</head>

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

案例1:王者荣耀小图标

 <title>方位名词应用</title>
    <style>
        h3 {
            width: 118px;
            height: 40px;
            font-size: 14px;
            font-weight: 400px;
            line-height: 40px;
            background-color: rgb(243, 211, 219);
            background-image: url(images/sprite.png);
            background-repeat: no-repeat;
            background-position: left center;
            text-indent: 2em;
        }
    </style>
</head>

<body>
    <h3>成长守护平台</h3>
</body>

 案例2:王者荣耀背景图

 <title>超大背景图</title>
    <style>
        body {
            background-image: url(images/jpg.jpg);
            background-position: center top;
            background-repeat: no-repeat;
        }
    </style>
</head>

<body>

</body>

精确单位

  1. 如果参数是精确坐标,那么第一个肯定是x 第二个肯定是y ;
  2. 如果只有一个参数,参数一定是 x ,另外一个默认垂直居中。
<title>精确单位</title>
    <style>
        div {
            background-image: url(images/wlop.jpg);
            width: 500px;
            height: 500px;
            background-color: pink;
            background-repeat: no-repeat;
            /* 如果参数是精确坐标,那么第一个肯定是x 第二个肯定是y  */
            /* background-position: 20px 50px; */
            /* background-position: 50px 20px; */

            /* 如果只有一个参数,参数一定是 x ,另外一个默认垂直居中 */
            background-position: 20px;
        }
    </style>
</head>

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

混合单位

  1. 指定两个值是精确单位和方位名词混合,第一个是x,第二个是y
 <title>混合单位</title>
    <style>
        div {
            background-image: url(images/wlop.jpg);
            width: 500px;
            height: 500px;
            background-color: pink;
            background-repeat: no-repeat;
            background-position: 20px center;
        }
    </style>
</head>

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

背景图片固定(背景附着)

background -attachment:设置背景图像是否固定或者随着页面其余部分滚动 

 <title>背景图片固定</title>
    <style>
        body {
            background-image: url(images/jpg.jpg);
            background-repeat: no-repeat;
            background-position: center top;
            color: #fff;
            font-size: 20px;
            background-attachment: fixed;
        }
    </style>
</head>

<body>
    <p>学而不思则罔,思而不学则殆</p>
    <p>学而不思则罔,思而不学则殆</p>
    <p>学而不思则罔,思而不学则殆</p>
    <p>学而不思则罔,思而不学则殆</p>
    <p>学而不思则罔,思而不学则殆</p>
    <p>学而不思则罔,思而不学则殆</p>
    <p>学而不思则罔,思而不学则殆</p>
    <p>学而不思则罔,思而不学则殆</p>
    <p>学而不思则罔,思而不学则殆</p>
    <p>学而不思则罔,思而不学则殆</p>
    <p>学而不思则罔,思而不学则殆</p>
    <p>学而不思则罔,思而不学则殆</p>
    <p>学而不思则罔,思而不学则殆</p>
    <p>学而不思则罔,思而不学则殆</p>
    <p>学而不思则罔,思而不学则殆</p>
    <p>学而不思则罔,思而不学则殆</p>
</body>

 

背景复合写法

没有特定的书写顺序, 一般习惯顺序

background:背景颜色---背景图片地址---背景平铺---背景图像滚动---背景图片位置

 <title>背景属性复合写法</title>
    <style>
        body {
            background: black url(images/jpg.jpg) no-repeat fixed center top;
            color: #fff;
            font-size: 20px;
        }
    </style>
</head>

<body>
    <p>学而不思则罔,思而不学则殆</p>
    <p>学而不思则罔,思而不学则殆</p>
    <p>学而不思则罔,思而不学则殆</p>
    <p>学而不思则罔,思而不学则殆</p>
    <p>学而不思则罔,思而不学则殆</p>
    <p>学而不思则罔,思而不学则殆</p>
    <p>学而不思则罔,思而不学则殆</p>
    <p>学而不思则罔,思而不学则殆</p>
    <p>学而不思则罔,思而不学则殆</p>
    <p>学而不思则罔,思而不学则殆</p>
    <p>学而不思则罔,思而不学则殆</p>
    <p>学而不思则罔,思而不学则殆</p>
    <p>学而不思则罔,思而不学则殆</p>
    <p>学而不思则罔,思而不学则殆</p>
    <p>学而不思则罔,思而不学则殆</p>
    <p>学而不思则罔,思而不学则殆</p>
    <p>学而不思则罔,思而不学则殆</p>
    <p>学而不思则罔,思而不学则殆</p>
    <p>学而不思则罔,思而不学则殆</p>
</body>

背景色半透明

background:rgba(0,0,0,.3);

最后一个是alpha透明度,取值在0-1之间,实际开发0.3——.3

 <title>背景半透明</title>
    <style>
        div {
            width: 200px;
            height: 200px;
            background: rgba(0, 0, 0, .5);
        }
    </style>
</head>

<body>
    <div>隐形的翅膀</div>
</body>

案例——导航栏

<title>多变导航栏</title>
    <style>
        .nav a {
            /* 行内块元素 */
            display: inline-block;
            text-decoration: none;
            text-align: center;
            color: #fff;
            width: 114px;
            height: 44px;
            line-height: 44px;
            background: rgb(255, 255, 255);
        }

        .nav .bg1 {
            background: url(images/jpg1.jpg) no-repeat center;
        }

        .nav .bg2 {
            background: url(images/jpg2.jpg) no-repeat center;
        }

        .nav .bg1:hover {
            background: url(images/jpg2.jpg);
        }

        .nav .bg2:hover:hover {
            background: url(images/jpg1.jpg);
        }
    </style>
</head>

<body>
    <div class="nav">
        <a href="#" class="bg1">五彩导航</a>
        <a href="#" class="bg2">五彩导航</a>
        <a href="#" class="bg1">五彩导航</a>
        <a href="#" class="bg2">五彩导航</a>
    </div>

</body>

学而不思则罔,思而不学则殆 。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值