css笔记

1 篇文章 0 订阅
这篇博客详细介绍了CSS中的字体、外观、文本和复合选择器等基本属性,包括字体家族、颜色、行高、链接伪类选择器以及结构伪类选择器的使用。还深入探讨了浮动、清除浮动的多种方法,如额外标签法、overflow隐藏和伪元素清除。此外,讲解了显示模式转换、元素定位、盒子模型以及布局流程。最后,提到了一些新的CSS选择器、动画、Flex布局和Emmet语法,帮助开发者更好地理解和应用CSS。
摘要由CSDN通过智能技术生成

字体

字体属性

font-family: "微软雅黑"/* 字体*/
font-size:20px;  /*  大小*/
font-weight:500;  /*  粗细*/
font-style:italic  /* 斜体*/

外观

文本属性

 /* 颜色 */
    color :red;  
    /* 文本对齐 */
    text-align: left;
    /* 行高 */
    line-height: 30px;
    /* 首行缩进 */
    text-indent: 2em;
    /* 下划线、上划线、删除线等 */
    text-decoration:none;

复合选择器

/* 后代选择器(含子孙后代) */
.nihao p{}
/* 子代选择器(只含子代) */
.nihao>p {}
/* 交集选择器(中间不能有空格) */
.nihao.wohao{}
/* 并集选择器(中间逗号隔开) */
.nihao,.wohao {}

链接伪类选择器

/* 未访问的链接 */
a:link  {}
/* 已访问的链接 */    
a:visited {}
/* 鼠标移动到链接上 */  
a:hover {}
/* 选定的链接 */    
a:active {} 
  
需要给a链接单独制定样式

input:foucs  聚焦伪类选择器

属性选择器

有点正则表达式的意思

/* 属性选择器使用方法 */
        /* 选择的是:  既是button 又有 disabled 这个属性的元素 */
        /* 属性选择器的权重是 10 */
        /* 1.直接写属性 */
        
        button[disabled] {
            cursor: default;
        }
        
        button {
            cursor: pointer;
        }
        /* 2. 属性等于值 */
        
        input[type="search"] {
            color: pink;
        }
        /* 3. 以某个值开头的 属性值 */
        
        div[class^="icon"] {
            color: red;
        }
        /* 4. 以某个值结尾的 */
        
        div[class$="icon"] {
            color: green;
        }
        /* 5. 可以在任意位置的 */
        
        div[class*="icon"] {
            color: blue;
        }

结构伪类选择器

ul li:first-child {
            background-color: pink;
        }
        
        ul li:last-child {
            background-color: deeppink;
        }
        /* nth-child(n)  我们要第几个,n就是几  比如我们选第8个, 我们直接写 8就可以了 */
        
        ul li:nth-child(8) {
            background-color: lightpink;
        }
      
/* 偶数 */
     ul li:nth-child(even) {
       background-color: aquamarine;
     }
   
     /* 奇数 */
     ul li:nth-child(odd) {
       background-color: blueviolet;
     }
   
     /*n 是公式,从 0 开始计算 */
     ul li:nth-child(n) {
       background-color: lightcoral;
     }
   
     /* 偶数 */
     ul li:nth-child(2n) {
       background-color: lightskyblue;
     }
   
     /* 奇数 */
     ul li:nth-child(2n + 1) {
       background-color: lightsalmon;
     }
   
     /* 选择第 0 5 10 15, 应该怎么选 */
     ul li:nth-child(5n) {
       background-color: orangered;
     }
   
     /* n + 5 就是从第5个开始往后选择 */
     ul li:nth-child(n + 5) {
       background-color: peru;
     }
   
     /* -n + 5 前五个 */
     ul li:nth-child(-n + 5) {
       background-color: tan;
     }
   </style>
div span:nth-child(2) {
            background-color: pink;
        }
        /* 总结: :nth-child(n)  选择 父元素里面的 第 n个孩子, 它不管里面的孩子是否同一种类型 */
        /* of-type 选择指定类型的元素的 第几个*/
        
        div span:first-of-type {
            background-color: purple;
        }
        
        div span:last-of-type {
            background-color: skyblue;
        }
        
        div span:nth-of-type(2) {
            background-color: red;
        }

伪元素选择器

<style>
        div {
            width: 300px;
            height: 300px;
            border: 1px solid #000;
        }
        
        div::before {
            content: "我";
            display: inline-block;
            width: 100px;
            height: 100px;
            background-color: pink;
        }
        
        div::after {
            content: "小猪佩奇";
            display: inline-block;
            width: 100px;
            height: 100px;
            background-color: pink;
        }
    </style>
</head>

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

- `before` 和 `after` 必须有 `content` 属性
   - `before` 在内容前面,after 在内容后面
   - `before` 和 `after` 创建的是一个元素,但是属于行内元素
   - 创建出来的元素在 `Dom` 中查找不到,所以称为伪元素
   - 伪元素和标签选择器一样,权重为 1

显示模式

标签显示模式 重点
用于布局
块级元素
<div><h1>~<h6><p>、、<ul><ol><li>
行内元素
<span><a><strong><b><em><i><del><s><ins><u>、
行内块元素
<img /><input /><td>
元素模式元素排列设置样式默认宽度包含
块级元素一行只能放一个块级元素可以设置宽度高度容器的100%容器级可以包含任何标签
行内元素一行可以放多个行内元素不可以直接设置宽度高度它本身内容的宽度容纳文本或则其他行内元素
行内块元素一行放多个行内块元素可以设置宽度和高度它本身内容的宽度

标签显示模式转换 display

- 块转行内:display:inline;
- 行内转块:display:block;
- 块、行内元素转换为行内块: display: inline-block;

单行文本垂直居中

line-height: 盒子高度;

元素背景

background-color: #fff;
    background-image: url();
    background-position: 0 0;
    background-size: contain;
    background-repeat: no-repeat;
    /* 背景是滚动的还是固定的 */
    background-attachment: fixed;

    /* 书写顺序官方并没有强制标准 */

盒子

盒子由内容、边框、内边距、外边距组成
border: 1px solid;
    margin:10px;
    padding:10px;
    border-radius: 10px;
    /* 阴影 */
    box-shadow: 0 15px 30px  rgba(0, 0, 0, .4);;

盒子水平居中

先设定盒子宽度,再
margin:0 auto

外边距塌陷

相邻块元素外边距合并 原因有可能是游览器认为外边距属性名一样,就合并了,取了较大值
处理方式父元素加overflow: hidden

文字阴影

text-shadow

浮动 float

布局的三种机制
CSS 提供了 **3 种机制**来设置盒子的摆放位置,分别是**普通流**(标准流)、**浮动**和**定位**,其中: 

1. **普通流**(标准流)
   - **块级元素**会独占一行,**从上向下**顺序排列;
     - 常用元素:div、hr、p、h1~h6、ul、ol、dl、form、table
   - **行内元素**会按照顺序,**从左到右**顺序排列,碰到父元素边缘则自动换行;
     - 常用元素:span、a、i、em等
2. **浮动**
   - 让盒子从普通流中**浮**起来,主要作用让多个块级盒子一行显示。
3. **定位**
   - 将盒子**定**在浏览器的某一个**位**置——CSS 离不开定位,特别是后面的 js 特效。


纵向排列用标准流,横向用浮动
float:left
任何元素都可以浮动。浮动元素会生成一个块级框,而不论它本身是何种元素。 
生成的块级框和我们前面的行内块极其相似
**如果一个盒子里面有多个子盒子,如果其中一个盒子浮动了,其他兄弟也应该浮动。防止引起问题**

清除浮动

因为父级盒子很多情况下,不方便给高度,但是子盒子浮动就不占有位置,最后父级盒子高度为0,
就影响了下面的标准流盒子
准确地说,并不是清除浮动,而是**清除浮动后造成的影响**
**清除浮动主要为了解决父级元素因为子级浮动引起内部高度为0 的问题。清除浮动之后, 父级就会根据浮动的子盒子自动检测高度。父级有了高度,就不会影响下面的标准流了**

1.额外标签法

.clear{
      clear:both;
     }
     在浮动的盒子之下再放一个标签,在这个标签中使用clear:both,来清除浮动对页面的影响
<style>
		/*很多情况下,我们的父盒子,不方便给高度  根据内容撑开,有多少内容,我的父盒子就有多高*/
		.one {
			width: 500px;
			/*background-color: pink;*/
			border: 1px  solid red;
		}
		/*因为damao 二毛 浮动了,不占有位置, 而父级又没有高度, 所以two 就到底下去了*/
		.damao {
			float: left;
			width: 200px;
			height: 200px;
			background-color: purple;
		}
		.ermao {
			float: left;
			width: 250px;
			height: 250px;
			background-color: skyblue;
		}
		.two {
			width: 700px;
			height: 150px;
			background-color: #000;
		}
		/*清除浮动*/
		.clear {
			clear: both;
		}
	</style>
</head>
<body>
	<div class="one">
		<div class="damao"></div>
		<div class="ermao"></div>
		<div class="clear"></div> //此处专门加入含属性(clear:both )的标签,用来清除浮动带来的影响
	</div>
	<div class="two"></div>
</body>

2父级元素添加overflow:hidden

3父级元素添加after伪元素

<style>
		/*声明清除浮动的样式*/
		.clearfix:after {
			content: "";
			display: block;
			height: 0;
			visibility: hidden;
			clear: both;
		}
		.clearfix {
			*zoom: 1;  /*ie6,7 专门清除浮动的样式*/
		}
		/*很多情况下,我们的父盒子,不方便给高度  根据内容撑开,有多少内容,我的父盒子就有多高*/
		.one {
			width: 500px;
			/*background-color: pink;*/
			border: 1px  solid red;
			
		}
		/*因为damao 二毛 浮动了,不占有位置, 而父级又没有高度, 所以two 就到底下去了*/
		.damao {
			float: left;
			width: 200px;
			height: 200px;
			background-color: purple;
		}
		.ermao {
			float: left;
			width: 250px;
			height: 250px;
			background-color: skyblue;
		}
		.two {
			width: 700px;
			height: 150px;
			background-color: #000;
		}

	</style>
</head>
<body>
	<div class="one clearfix">
		<div class="damao"></div>
		<div class="ermao"></div>
	</div>
	<div class="two"></div>

4使用双伪元素清除浮动

<style>
		/*声明清除浮动的样式*/
		.clearfix:before,
		.clearfix:after {
			content: "";
			display: table;
		}
		.clearfix:after {
			clear: both;
		}
		.clearfix {
			*zoom: 1;
		}
		/*很多情况下,我们的父盒子,不方便给高度  根据内容撑开,有多少内容,我的父盒子就有多高*/
		.one {
			width: 500px;
			/*background-color: pink;*/
			border: 1px  solid red;
			
		}
		/*因为damao 二毛 浮动了,不占有位置, 而父级又没有高度, 所以two 就到底下去了*/
		.damao {
			float: left;
			width: 200px;
			height: 200px;
			background-color: purple;
		}
		.ermao {
			float: left;
			width: 250px;
			height: 250px;
			background-color: skyblue;
		}
		.two {
			width: 700px;
			height: 150px;
			background-color: #000;
		}

	</style>
</head>
<body>
	<div class="one clearfix">
		<div class="damao"></div>
		<div class="ermao"></div>
	</div>
	<div class="two"></div>
</body>

布局流程



1、必须确定页面的版心(可视区), 我们测量可得知。

2、分析页面中的行模块,以及每个行模块中的列模块。其实页面布局,就是一行行罗列而成

3、制作HTML结构。我们还是遵循,先***有结构,后有样式****的原则。结构永远最重要。

4、然后开始运用盒子模型的原理,通过DIV+CSS布局来控制网页的各个模块。

定位

将一个盒子自由的漂浮在其他盒子(包括标准流和浮动)的上面 
/*定位 = 定位模式 +  边偏移*/
			position: relative;
			top: 100px;
			left: 100px;
相对定位(relative) 相对于自己原来在标准流位置来说
相对定位不脱标

绝对定位 (absolute)相对父级或祖级元素的位置
子级是绝对定位,父级要用相对定位
绝对定位脱标

固定定位(fixed)相对于游览器窗口来说

静态定位 (static)按照标准流特性摆放位置,它没有边偏移

定位顺序
z-index 数字越大越靠上
z-index` 只能应用于**相对定位**、**绝对定位**和**固定定位**的元素,其他**标准流**、**浮动**和**静态定位**无效。

定位特殊用法, 行内元素加了绝对定位或固定定位属性之后,可以设置宽度,高度
块级元素添加绝对或固定定位之后,如果不给宽度或高度,默认大小是内容大小

元素显示与隐藏

display :none
none 隐藏对象  且不占原来位置  block 显示对象 

visibility:visible ;  对象可视
visibility:hidden;    对象隐藏    占有原来位置 


overflow:

属性值描述
visible不剪切内容也不添加滚动条
hidden不显示超过对象尺寸的内容,超出的部分隐藏掉
scroll不管超出内容否,总是显示滚动条
auto超出自动显示滚动条,不超出不显示滚动条

鼠标样式cursor

属性值描述
default小白 默认
pointer小手
move移动
text文本
not-allowed禁止

防止拖拽文本域resize

<textarea  style="resize: none;"></textarea>

行内元素或者行内块元素垂直对齐

vertical-align : baseline |top |middle |bottom
特别是行内块元素, **通常用来控制图片/表单与文字的对齐**。

溢出的文字省略号显示

/*1. 先强制一行内显示文本*/
      white-space: nowrap;
  /*2. 超出的部分隐藏*/
      overflow: hidden;
  /*3. 文字用省略号替代超出的部分*/
      text-overflow: ellipsis;

精灵图

一次使用一张图片的某个部分

新增选择器

1.属性选择器 标签【属性】
2.结构伪类选择器  在如ul列表中使用  ul li  :first-child
    nth-child (enen偶  add奇) 奇偶选择
    nth-child(公式)便利

伪类 选择器利用属性筛选元素的选择器

伪元素 用css创建的标签元素 而不需要html标签,简化了html结构    行内元素
::before           ::after

盒子模型类型

box-sizing:content-box    默认  会撑大盒子
box-sizing:border-box  设置padding和border不会撑大盒子

transform 动画

p {
            position: absolute;
            top: 50%;
            left: 50%;
            
            width: 200px;
            height: 200px;
            background-color: purple;
            /* margin-top: -100px;
            margin-left: -100px; */
            
            /* translate(-50%, -50%)  盒子往上走自己高度的一半   */
            transform: translate(-50%, -50%);
        }
        
        span {
            /* translate 对于行内元素是无效的 */
            transform: translate(300px, 300px);
        }

animation 动画

<style>
        /* 我们想页面一打开,一个盒子就从左边走到右边 */
        /* 1. 定义动画 */
        
        @keyframes move {
            /* 开始状态 */
            0% {
                transform: translateX(0px);
            }
            /* 结束状态 */
            100% {
                transform: translateX(1000px);
            }
        }
        
        div {
            width: 200px;
            height: 200px;
            background-color: pink;
            /* 2. 调用动画 */
            /* 动画名称 */
            animation-name: move;
            /* 持续时间 */
            animation-duration: 2s;
        }
    </style>
</head>

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


flex布局

## 2.0 flex布局原理

+ flex 是 flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性,任何一个容器都可以指定为 flex 布局。
+ 当我们为父盒子设为 flex 布局以后,子元素的 float、clear 和 vertical-align 属性将失效。
+ flex布局又叫伸缩布局 、弹性布局 、伸缩盒布局 、弹性盒布局 
+ 采用 Flex 布局的元素,称为 Flex 容器(flex

container),简称"容器"。它的所有子元素自动成为容器成员,称为 Flex 项目(flex
item),简称"项目"。

**总结**:就是通过给父盒子添加flex属性,来控制子盒子的位置和排列方式

## 3.0 父项常见属性
display:flex;
+ flex-direction:设置主轴的方向
+ justify-content:设置主轴上的子元素排列方式
+ flex-wrap:设置子元素是否换行  
+ align-content:设置侧轴上的子元素的排列方式(多行)
+ align-items:设置侧轴上的子元素排列方式(单行)
+ flex-flow:复合属性,相当于同时设置了 flex-direction 和 flex-wrap

### 3.1 flex-direction设置主轴的方向

+ 在 flex 布局中,是分为主轴和侧轴两个方向,同样的叫法有 : 行和列、x 轴和y 轴
+ 默认主轴方向就是 x 轴方向,水平向右
+ 默认侧轴方向就是 y 轴方向,水平向下



+ 注意: 主轴和侧轴是会变化的,就看 flex-direction 设置谁为主轴,剩下的就是侧轴。而我们的子元素是跟着主轴来排列的

 

  ​

### 3.2 justify-content 设置主轴上的子元素排列方式
flex-start
flex-end
center
space-around 平分
space-between 先贴两边,其余平分

### 3.3 flex-wrap设置是否换行

+ 默认情况下,项目都排在一条线(又称”轴线”)上。flex-wrap属性定义,flex布局中默认是不换行的。
+ nowrap 不换行
+ wrap 换行

### 3.4 align-items 设置侧轴上的子元素排列方式(单行 )

+ 该属性是控制子项在侧轴(默认是y轴)上的排列方式  在子项为单项(单行)的时候使用
+ flex-start 从头部开始
+ flex-end 从尾部开始
+ center 居中显示
+ stretch 拉伸

### 3.5 align-content  设置侧轴上的子元素的排列方式(多行)

设置子项在侧轴上的排列方式 并且只能用于子项出现 换行 的情况(多行),在单行下是没有效果的。

### 3.6 align-content 和align-items区别

+ align-items  适用于单行情况下, 只有上对齐、下对齐、居中和 拉伸
+ align-content适应于换行(多行)的情况下(单行情况下无效), 可以设置 上对齐、下对齐、居中、拉伸以及平均分配剩余空间等属性值。 
+ 总结就是单行找align-items  多行找 align-content

### 3.7 flex-flow 属性是 flex-direction 和 flex-wrap 属性的复合属性


flex-flow:row wrap;


## 4.0 flex布局子项常见属性

+ flex子项目占的份数
+ align-self控制子项自己在侧轴的排列方式
+ order属性定义子项的排列顺序(前后顺序)

### 4.1  flex 属性

flex 属性定义子项目分配剩余空间,用flex来表示占多少份数。


.item {
    flex: <number>; /* 默认值 0 */
}


### 4.2 align-self控制子项自己在侧轴上的排列方式

align-self 属性允许单个项目有与其他项目不一样的对齐方式,可覆盖 align-items 属性。

默认值为 auto,表示继承父元素的 align-items 属性,如果没有父元素,则等同于 stretch。


span:nth-child(2) {
      /* 设置自己在侧轴上的排列方式 */
      align-self: flex-end;
}



### 4.3 order 属性定义项目的排列顺序

数值越小,排列越靠前,默认为0。

注意:和 z-index 不一样。


.item {
    order: <number>;
}

emment语法

快捷输入

标签    table键
标签*数字    table键
ui>li    table键    div>span table键     父子级包含
div+p table键    兄弟级
.haode  #haode   默认div类  id     p.haode       p#haode 
ui>li#hao ui>li.hao
.hao$*10
div{你好}
div{你好}*10

css 简写

首字母 table键

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值