硬件转行之路——自学Web前端开发(四)


2021.8.20
一个半硬半软工程师的学习之路
距离上一篇的学习笔记,已经有12天了,很是无奈
迫于无奈,遇到无良老板,被迫踏上了又一次找工作之旅
(…此处省略万字)
提醒还在找工作的同学们,放平心态,偶尔遇到**也是人生的经验,该翻篇就翻篇。
同时还是欢迎各爱好者或志同道合的朋友共同探讨问题:826470121

在此感谢【尚硅谷】 的教学课程

CSS

样式的继承

	样式的继承,我们为一个元素设置的样式同时也会应用到它的后代元素上
	继承是发生在祖先和后代之间的
	继承的设计是为了开发方便,利用继承可以将一些通用的样式统一设置到共同的祖先元素上
	这样只需一次即可让所有元素具有该样式
注意:并不是所有的样式都会被继承:
	比如 背景相关的,布局相关等这些样式都不会被继承
	

选择器的权重

	样式的冲突
	-当我们通过不同的选择器,选中相同的元素,并且为相同的样式设置不同的值时,此时就发生了样式的冲突
	-发生样式冲突时,应用哪个样式由选择器的权重(优先级)决定
	可以在某一个样式的后边添加!important,则此时选择样式会获取最高的优先级,设置超过内联样式
	注意:在开发中这个玩意一定要慎用!
	选择器的权重
		内联样式     1000
		id选择器     0100
		类和伪类选择器 0010
		元素选择器    0001
		通配选择器    0000
		继承的样式    没有优先级
	比较优先级时,需要将所有的选择器的优先级进行相加计算,最后优先级越高,则越优先显示(分组选择器是单独计算的)
	选择器的累加不会超过其最大的数量级,类选择器在高也不会超过id选择器
	如果优先级计算后相同,此时则优先级优先使用靠下的样式

长度单位

	长度单位
		像素
		-屏幕(显示器)实际上是由一个一个的小点点构成的
		-不同屏幕的像素大小是不同的,像素越小的屏幕显示的效果越清晰
		-所以同样的200px像素在不同的设备下显示效果不一样
		百分比
		-也可以将属性值设置为相对于父元素属性的百分比
		-设置百分比可以使子元素跟随父元素的改变而改变
		em
		-em是相对与元素的字体大小来计算的
		-1em =1 font-size
		-em会根据字体大小的改变而改变
		rem
		-rem是相对于根元素(html)的字体大小来计算的
        .box1{
            width:10px;
            height:10px;
            background-color: orange;
        }
        .box2{
            width:50%;
            height:50%;
            background-color: skyblue;
        }

        .box3{
            font-size:20px;
            width:10em;
            height:10em;
            background-color: springgreen;
        }

颜色单位

	颜色单位:
		在CSS中可以直接使用颜色名来设置各种颜色
			比如:red、orange、yellow、blue、green ... ... 
			但是在CSS中直接使用颜色名是非常的不方便
		RGB值:
			-RGB通过三种颜色的不同浓度来调配出不同的颜色
			-R red,G green,B blue
			-每一种颜色的范围在0-2550%-100%)之间
			-语法:RGB(红色、绿色、蓝色)
		RGBA-就是在rgb的基础上增加了一个a标识不透明度
			-需要四个值,前三个和rgb一样,第四个表示不透明度
				1表示完全不透明 0表示完全透明 .5表示半透明
			
		十六进制的rgb值:
			-语法:#红色绿色蓝色
			-颜色浓度通过00-ff
			-如果颜色两位两位重复可以进行简写
				#aabbcc --> ##abc
		
		HSL值和HSLAH 色相(0-360S 饱和度 颜色的浓度 0-100%
			L 亮度 颜色的亮度 0-100%

            background-color: rgb(255, 0, 0);
            background-color: rgb(0, 255, 0);
            background-color: rgb(0, 0, 255);
            background-color: rgba(0, 0, 255,.8);
            background-color: #ff0000;
            background-color: #fffeaa91;
            background-color: rgb(46, 226, 166);
            background-color: hsla(300, 88%, 53%,0.658);

文档流

文档流(normal flow)
- 网页是一个多层的结构,一层摞着一层
- 通过CSS可以分别为每一层来设置样式
- 作为用户来讲只能看到最顶上一层
- 这些层中,最底下的一层成为文档流,文档流是网页的基础
我们所创建的元素默认都是在文档流中进行排列
-对于我们来说元素主要由两个状态
在文档流中
不在文档流中(脱离文档流)
-元素在文档流中的特点
-块元素
-块元素会在页面中独占一行(自上向下垂直排列)
-默认宽度是父元素的全部(会把父元素盛满)
-默认高度是被内容(子元素)撑开的

-行内元素
-行内元素不会独占页面的一行,只占自身的大小
-行内元素在页面中从左向右水平排列,如果一行之中不能容纳下所有的行内元素
则元素会换到第二行继续自左向右排列(书写习惯一致)
-行内元素的默认宽度和高度都是被内容撑开

盒模型

内容区(content),元素中的所有子元素和文本内容都在内容区中排列
内容区的大小由width和height两个属性来设置
width 设置内容区的宽度
height 设置内容区的高度
边框(border),边框属于盒子边缘,边框里边属于盒子内部,除了边框都是盒子的外部,要设置边框,至少需要设置三个样式:
边框的宽度 border-width
边框的颜色 border-color
边框的样式 border-style

border-width: 1em;
border-color: red;
border-style: solid;

盒子模型_边框

	边框
	-内容区(content)
	-内边距(padding)
	-外框(border)
	-外边距(margin)

	border-width:10px
		默认值,一般都是3个像素
		border-width 可以用来指定四个方向的边框宽度
		 	值的情况
		 		四个值:上 右 下 左
		 		三个值:上 左右 下
		 		两个值:上 下 左右
		 		一个值:上下左右
		 除了borde-width还有一组border-xxx-width
		 	xxx可以是 top right bottom left
		 	用来单独指定某一个边的宽度
		 
	border-color用来指定边框的颜色,同样可以分别指定四个边的边框
		规则和border-width一样
	border-color也可以省略不写,如果省略了则自动使用color的颜色值
	border-color:orange;

	border-style 指定边框的样式
		solid 实线
		dotted 点状虚线
		dashed 虚线
		double 双线
		border-style:solid;

	border简写属性,通过该属性可以设置边框的所有样式,并且没有顺序要求
	除了border以外还有border xxx
			border-top
			border-right
			border-bottom
			border-left

盒子模型_内边距

                内边距(padding)
                    -内容区和边框之间的距离是内边距
                    -一共有四个方向的内边距
                        padding-top
                        padding-right
                        padding-bottom
                        padding-left
                    -内边距的设置会影响到盒子的大小
                    -背景颜色会延伸到内边距上
                一个盒子的可见框的大小,由内容区 内边距 和 边框共同决定,
                    所以在计算盒子大小时,需要将这三个区域加到一起计算
                padding 内边距的简写属性,可以同时指定四个方向的内边距
                    规则和border-width 一样

盒子模型_外边距

                外边距(margin)
                    -外边距不会影响盒子可见框的大小
                    -但是外边距会影响盒子的位置
                    -一共由四个方向的外边距
                        margin-top
                            -上外边距,设置一个正值,元素会向下移动
                        margin-right
                            -默认情况下设置margin-right不会产生任何效果
                        margin-bottom
                            - 下外边距,设置一个正值,其下边的元素会向下移动
                        margin-left
                            -左外边距,设置一个正值,元素会向右移动
                        

                        - margin也可以设置负值,如果是负值则元素会向相反的方向移动
                    -元素在页面中是按照自左向右的顺序排列的
                        所以默认情况下如果我们设置的左和上外边距则会移动元素自身
                        而设置下和右外边距会移动其他元素
                    
                    -margin的简写属性
                        margin 可以同时设置四个方向的外边距,用法和padding一样
                    
                    margin会实际影响盒子的占用空间

盒子模型_水平布局

                元素水平方向的布局:
                    元素在其父元素中水平方向的位置由以下几个属性共同决定
                        margin-left
                        border-left
                        padding-left
                        width
                        padding-right
                        border-rignt
                        margin-right
                    
                    一个元素在其父元素中,水平布局必须要满足以下的等式
                        margin-left+border-left+padding-left+width+padding-right+border-rignt+margin-right 
                        =其父元素内容区的宽度(必须满足)                                  

                        0 + 0 + 0 + 200 + 0 + 0 + 0 = 800
                        0 + 0 + 0 + 200 + 0 + 0 + 600 = 800

                        100 + 0 + 0 + 200 + 0 + 0 + 500 = 800
                            -以上等式必须满足,如果相加结果使等式不成立,则称为过度约束,则等式会自动调整
                                -调整的情况:
                                    -如果这7个值中没有为 auto 的情况,则浏览器会自动挑中margin-right值,以使等式满足
                            -这七个值中有三个值可以设置为auto
                                width
                                margin-left
                                margin-right
                                - 如果某个值为auto,则会自动调整为auto的那个值以使
                            -如果将一个宽度和一个外边距设置为auto,则宽度会调整到最大,设置为auto的外边距调整为0
                            -如果将三个值都设置为auto,则外边距都是0,宽度最大
                            -如果将两个外边距设置为auto,宽度固定值,则会将外边距设置为相同的值
                            -所以我们经常利用这个特点来使一个元素在其父元素中水平居中
                                示例:
                                    width:xxpx;
                                    margin:0 auto;

盒子模型_垂直布局

        .outer{
  
            background-color: #bfa;
           
            /* 
                默认情况下父元素的高度被内容撑开
            */


        }
        .inner{
            width:100px;
            background-color: yellow;
            height:200px;
            margin-bottom: 100px;
        }

        .box1{
            width:200px;
            height: 200px;
            background-color: #bfa;
            /* 
                子元素是在父元素的内容中排列的。
                    如果子元素的大小超过了父元素,则子元素会从父元素中溢出
                    使用 overflow属性设置父元素如何处理溢出的子元素
                    可选值:
                        visible 默认值, 子元素会从父元素中溢出,在父元素外部的位置显示;
                        hidden 溢出内容将会被裁剪
                        scroll 生成两个滚动条,来查看完整的内容
                        auto 根据需要生成滚动条
            */          
             overflow: auto; 

        }

外边距的折叠

            垂直外边距的重叠(折叠)
               -相邻的垂直方向外边距会发生重叠现象
               -兄弟元素
                   -兄弟元素间的相邻垂直外边距会取两者之间的较大值(两者都是正值)
                   -特殊情况:
                       如果相邻的外边距一正一负,则取两者的和
                       如果相邻的外边距都是负值,则取两者中绝对值较大的

                   -兄弟元素之间的外边距的重叠,对于开发是有利的,所以我们不需要进行处理

               -父子元素
                   -父子元素间相邻外边距,子元素的会传递给父元素(上外边距)
                   -父子外边距的折叠会影响到页面的布局,必须要进行处理

行内元素的盒模型

        .s1{
           background-color: yellow;
           /* 
               行内元素的盒模型
                   -行内元素不支持设置宽度和高度
                   -行内元素可以设置padding,但是垂直方向padding不会影响页面的布局
                   -行内元素可以设置border,垂直方向的border不会影响页面的布局
                   -行内元素可以设置margin,垂直方向的margin不会影响布局
           */
           /* width:100px;
           height:100px; */

           margin:100px;
       }

       .box1{
           width: 200px;
           height: 200px;
           background-color: #bfa;
       }
       a{
           /* 
               display 用来设置元素显示的类型
                   可选值:
                       inline 将元素设置为行内元素
                       block  将元素设置为块元素
                       inline-block 将元素设置为行内块元素
                           行内块,既可以设置宽度和高度有不会独占一行
                       none 元素不在页面中显示
               
               visibility 用来设置元素的显示状态
                   可选值:
                       visible 默认值,元素在页面中正常显示
                       hidden 元素在页面中隐藏 不显示,但是依然占据页面的位置

           */
           display: block;

           visibility: visible;
           width:100px;
           height:100px;
           background-color: orange;
       }

默认样式

        /* 
           重置样式表,专门用来对浏览器的样式进行重置的
               reset.css 直接去除了浏览器的默认样式
               normalize.css 对默认样式进行了统一
               
           默认样式
               - 通常情况下,浏览器都会为元素设置一些默认样式
               - 默认样式的存在会影响到页面的布局,通常情况下编写网页时必须要去除浏览器的默认样式
                   通常情况下编写网页时必须要去除浏览器的默认样式(PC端的页面)                    
       */
       
       body{
           margin: 0;
       }

       p{
           margin: 0;
       }

       ul{
           margin:0;
           padding: 0;
           /* 去除项目符号 */
           list-style: none;
       }
   
       /* *{
           margin: 0;
           padding: 0;
       } */
       
       .box1{
           width:100px;
           height: 100px;
           border:1px solid black;
       }

练习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>图片列表</title>
    <!-- 重置body样式 -->
    <link rel="stylesheet" href="./css/reset.css">
    <style>
        /* 设置body的背景颜色 */
        body{
            background-color: antiquewhite;
        }
        .img-list{
            /* 设置外部ul的样式 */
            
            /* 设置ul的宽度 */
            width: 190px;
            /* 设置ul的高度 */
            height: 470px;
            /* 裁剪溢出的内容 */
            overflow: hidden;
            /* 使ul在页面中居中(实际示例中不需要这么写) */
            margin: 50px auto;

            background-color: #F4F4F4;
        }

        /* 设置li的位置 */
        .img-list li:not(:last-child){
            margin-bottom: 10px;
        }
        /* 设置图片的大小 */
        .img-list img{
            width:100%;
        }

    </style>
</head>
<body>
    <ul class="img-list">
        <li>
            <a href="javascript:;">
                <img src="./img/01/1.jpg" alt="">
            </a>
        </li>

        <li>
            <a href="javascript:;">
                <img src="./img/01/2.jpg" alt="">
            </a>
        </li>

        <li>
            <a href="javascript:;">
                <img src="./img/01/3.jpg" alt="">
            </a>
        </li>
    </ul>

</body>
</html>

显示效果:(图片随意找)
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

爱睡觉的飞飞飞飞

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

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

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

打赏作者

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

抵扣说明:

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

余额充值