02.常用的css属性

1.css的引入

行内样式

<body>
  <div style="color:pink; font-size: 12px;">开心</div>
</body>

外部引入

<head>
		<meta charset="utf-8" />
		<title></title>
		<link rel="stylesheet" href="css/index.css">
		
	</head>

内部引入

<head>
  <style>
    div {
      color: red;
      font-size: 12px;
    }
  </style>
</head>
<body>
  <div>开心</div>
</body>

 2.选择器

优先级:那个更精准那个优先级高

通用选择器 

*{}选中所有标签

标签选择器

p{},div{},span{},a{}

类选择器 

 .one{} ,class='one two'

<head>
		<meta charset="utf-8" />
		<title></title>
		<style>
			.al{
				
			}
		</style>
	</head>
	<body>
		<div class="a1"></div>
		
	</body>

id选择器   

#one{},id=‘one’

<head>
		<meta charset="utf-8" />
		<title></title>
		<style>
			#al{
				
			}
		</style>
	</head>
	<body>
		<div id="a1"></div>
		
	</body>

通配符选择器 *{}

属性选择器

[自创属性名]{}

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<style>
			/* 选择所有的拥有qwq属性的标签 */
			[qwq]{
				border: 1px solid pink;
			}
			/* qwq属性值加引号 */
			/* 只给1加背景色 */
			[qwq="1"]{
				background-color: aqua;
			}
		</style>
	</head>
	<body>
		<ul>
			<!-- qwq是自创的属性 -->
			<li qwq="1">1</li>
			<li qwq="2">2</li>
			<li qwq="3">3</li>
		</ul>

	</body>
</html>

后代选择器  div  p{}(父选择器和子选择器之间用空格隔开)

                         会选中div里面所有的p,包括孙子p,孙孙子p·····父选择器或子选择器可以用上面,各种组合

子代选择器 div>p{}(父选择器和子选择器之间用大于号隔开)

                          会选中div里面的子p,孙子p不会被选中,父选择器或子选择器可以用上面组合

并集选择器  选择器1,选择器2{}(用逗号隔开)

                            父选择器或子选择器可以用上面所有的,各种组合

交集选择器 选择器1选择器2

                              p.a{}(选择用a类的p标签)

伪类选择器 

(1).选择器:hover(鼠标悬停时的状态)

div:hover{}

a:hover{}

选择同等级的时候要加+

例子:鼠标上去盒子显示

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<style>
			.box1{
				width: 50px;
				height: 30px;
				background-color: antiquewhite;
			}
			.box2{
				position: relative;
				display: none;
				width: 100px;
				height: 100px;
				background-color: aqua;
			}
			.box3{
				position: absolute;
				top:-18px ;
				width: 0;
				height: 0;
				border: 10px solid transparent;
				border-bottom-color:red ;
			}
			.box1:hover+.box2{
				display: block;
			}
		</style>
	</head>
	<body>
		<div class="box1"></div>
		<div class="box2">
			<div class="box3"></div>
		</div>
	</body>
</html>

(2). :link,:visited,:hover,:active,:focus

:link “链接”:超链接点击之前
:visited “访问过的”:链接被访问过之后
:hover “悬停”:鼠标放到标签上的时候
:active “激活”: 鼠标点击标签,但是不松手时。

:focus "光标":用于选取获得焦点的表单元素,input类的标签才可以使用

<style>
	input{
		width: 100px;
		height: 20px;
				
	}
	input:focus{
		/* input获得光标时背景出现 */
		background-color: aqua;
	}
		</style>
	</head>
	<body>
		<input type="text" name="" id="">
	</body>

(3).结构伪类选择器 

p :first-child(1)选择p的父级的第一个子p标签

 p :last-child(1)选择p的父级的最后一个子p标签

 p :nth-child(n)选择p的父级的第n个子p标签

  p :nth-last-child(n)选择p的父级的倒数第n个子p标签

相邻兄弟选择器   .box1+.box2  选中的是box1的同等级的第一个兄弟box2

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<style>
			.box1+.box2{
				width: 100px;
				height: 100px;
				background-color: aqua;
				margin-top: 20px;
			}
		</style>
	</head>
	<body>
		<div class="box1">
			
		</div>
		<div class="box2">
			niaaaa
		</div>
	</body>
</html>

通用兄弟选择器 .box1~p{}   会把box1同等级的所有p标签都选中

3.文字样式属性

(1).属性:

(2).属性对应的值

字体粗细:normal 正常,bold 加粗,400 正常,700加粗

字体样式:normal正常,italic倾斜

字体类型:宋体 黑体 其它字体(可以双引号加汉字)

连写: font: italic 700 66px 宋体;

(3).首行缩进,对齐方式

缩进:text-indent:xxpx;或xxem(em是当前文字的大小)

对齐方式:text-align:(left 左对齐 ,center居中, right右对齐),可以让内容对齐,不管是图片还是标签

上下居中:要居中让line-heigth的值等于盒子的高

(4).文本装饰(下划线,无线,上划线)

text-decoration:(none无装饰,underline下划线)

(5).行高

line-height:xxpx 或  n(倍);

(6).继承

所有控制字体的都能继承

4.单位

px像素

em取当前文字的大小,2em当前文字大小的2倍,首先查看自己有没有设置font-size:,没有就去查看父元素有没有设置。

rem相对与根元素html,默认的1rem=16px;

em和rem是设置字体大小的。

vw相对屏幕多宽,1vw=屏幕的百分之1宽

vh相对屏幕多高,1vh=屏幕的百分之1高

vw和vh是设置盒子的

一般组合使用

5.背景background

(1).颜色透明效果:background-color:rgba(0,0,0,.5);//黑色半透明

(2).背景图:background-img:url(图片地址)

(3).背景平铺:background-repeat:(repeat水平垂直都平铺  no-repeat不平铺  repeat-x水平                                  铺 repeat- y垂直平铺)

(4).背景位置:background-position:(水平位置 垂直位置);

                水平位置值:left center right (左中右)或xxpx

                垂直位置值:top center bottom(上中下)或xxpx

(5).背景图缩放:background-size:contain

简写:background:color  url(地址)  repeat position;

6.块元素,行内元素,行内块元素

块级:占一行 div  p ul li dl dt  h1-h6,可以直接设置宽高,不设置高默认内容的高

行内:一行多个 a span  设置宽高无效,宽高是内容的宽高

行内块:一行多个,可以加宽高 input textarea button select

元素模式转换

display:block; 转为块

display:inline-block; 转为行内块

7.盒子模型

从内到外:内容>内边距pad>边框border>外边距mar

内边距pad:pad和border会撑大盒子

导航栏的每一项可以不用加宽度,使用padding来撑开li。

如果盒子没有指定width,那么padding的左右没效果

如果盒子没有指定height,那么padding的上下没效果

自减操作:给盒子添加属性box-sizing:border-box;

嵌套块元素垂直外边距塌陷问题

如果两个块级盒子是父子关系,父元素和子元素都要mag-top那子元素的mag-top不生效,

如何子元素外边距塌陷问题

(1).可以为父元素定义上边框或边框

(2).可以为父元素定义上内边距

(3).可以给父元素添加overflow:hidden

如何清除内外边距:

*{
	margin: 0;
	padding: 0;
}

如何让版心居中:(网页内容居中)

margin: 0 auto;

行内元素的mar,pad的垂直方向无法生效问题

用line-heigth

8.浮动

(1).浮点特点

会脱标,不占位置了,但是内容还在,可以让块级元素横向排列.

浮动元素,只会压住下面标准流的盒子,不会压住内容

但是绝对定位和固定定位会压住下面标准流的所有内容

浮点元素会具有行内块元素的特点,不管什么元素都可以设置宽高了

 绝对定位和固定定位压内容

(2).清除浮动

给浮动元素的父标签加一个clearfix类

.clearfix::before,.clearfix::after{
	centent:"";
}
.clearfix::after{
	clear: both;
}

9.定位(position)

(1).为什么需要定位

定位可以让某个元素自由的在一个盒子内移动,并且压住其它盒子。

加了定位的元素都有了行内块特点。

(2).定位组成

定位=定位模式+边偏移

(3).定位模式

position定位模式是否脱标使用场景
relative相对定位不脱标,相对之前的位置移动大盒子里面小盒子,大盒子使用相对定位
absolute绝对定位脱标,如果父盒子有定位,相对父盒子移动,如果没有,就相对屏幕移动大盒子里面小盒子,小盒子使用绝对定位
fixed固定定位脱标某些东西固定在屏幕上,或者固定在版心右边,返回顶部
sticky粘性定位不脱标,有相对定位和绝对定位的特点,必须添加top,bottom,left,right中的一个

top:10px;

距离屏幕上方10px时,变成粘性定位,固定在屏幕上,不往上移

(4).边偏移

left ,top, right, bottom 都写了的话,left和top生效

(5).使用场景

1).固定在版心的右侧位置,不管放大还是缩小都在版心旁边

    先让固定定位盒子left:50%

    再让固定定位的盒子margin-left:版心的一半

2).如何让绝对定位的盒子居中?不能使用margin:0 auto;已经失效了 ,

方法一:

left:50%;
margin-left:-100px;

方法二:

left:50%;
transform:translate(-50%,-50%);

第一个值是水平居中,向左移动自己宽度的50%。第二个值是垂直

3).轮播图的左右按钮,下面的小按钮,使用绝对定位

10.盒子层级问题

(1).标准流<浮动<定位

(2).默认情况下,定位的盒子,后来的在上面;

z-index:取值越大,显示在最上面;有定位的元素才能生效。

11.装饰(垂直对齐方式,光标类型,边框圆角,overflow溢出,元素隐藏,元素透明,盒子阴影,input轮廓线,文本域取消放大缩小)

1.vertical-align垂直对齐方式(只有行内块和行内元素有这个问题)

场景1:浏览器遇到行内和行内块标签垂直方向不对齐,默认是按文字基线对齐,把他当作文字处理了。

场景2:盒子没有高度,里面有图片,给图片设置为middle对齐

场景3:盒子有高和宽,里面有图片,让图片水平垂直居中。给盒子加ling-heigth:盒子高,给图片加vertical-align:高

图片和文字,按钮和文字,不给文字加vertical-align,给不是文字的加

2.光标类型,属性名cursor

         not-allowed禁止样式

3.边框圆角

border-radius:xxpx;(圆角半径)

从左上角开始赋值,没有四个值看对角

4.溢出overflow

5.元素显示与隐藏

    (1). display显示隐藏

             取block,inline,online-block显示元素

             取none隐藏元素,不在占位置,下面的盒子会上来,没有把他删除,隐藏了

    (2).visibility可见性

             取visible,元素可视

             取hidden,元素隐藏,继续占用原来位置

    (3).overflow溢出显示与隐藏,上面的

6.元素透明opacity

opacity:0~1;会让整个元素包括里面的内容都变透明。

7.盒子阴影box-shadow(文字阴影同)

 

8.取消input轮廓线

outline:none;

9. 取消文本域textarea的放大缩小

resize:none;

12.过渡transition

一般配合hover使用

给需要过度的元素加,哪个盒子的属性要变化就给那个盒子加

transition:width 3s,heigth 4s;//

transition:all 3s;//所有要改变的属性都要效果

例:鼠标移动上去盒子宽度在3s内变为200px

div{
	width: 100px;
	height: 100px;
	background-color: aqua;
				
	}
div:hover{
	transition:width 2s;
	width: 200px;
	}

13.精灵图

    为社么使用精灵图?

          减少发送请求的次数,把所有的小图标(背景)合成一个大图,请求一次就够了

    怎么使用精灵图?

          background-position:(右移10)10px,(下移10)10px

14.字体图标

       图标下载

                iconfont-阿里巴巴矢量图标库

15.css三角

     盒子的宽高都是0,边框是透明的,根据三角形方向给某条边框赋元素

     边框透明border:10px solid transparent;

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>
		</title>
		<style>
			.box1{
				width: 0;
				height: 0;
				border-top: 10px solid red;
				border-right: 10px solid orange;
				border-bottom: 10px solid yellow;
				border-left: 10px solid skyblue;
			}
			.box2{
				width: 0;
				height: 0;
				border: 10px solid transparent;
				/* transparent 边框是透明的 */
				border-top-color:red;
				margin-top: 10px;
			}
		</style>
	</head>
	<body>
		<div class="box1"></div>
		<div class="box2"></div>
		<div class="box3"></div>
	</body>
</html>

16.移动端基础

(1).meta视口标签

其中width的特殊值式设备宽度的意思

标准的写法:

注意:content用双引号把其它包裹起来

<meta name="viewport" content="width=device-width, initial-scale=1.0
    minimum-scale=1.0 ,user-scalable=no">

(2).物理像素,物理像素比

物理像素:1px在屏幕上显示多大,就是分辨率

                    pc端1px=1个物理像素点

                     移动端1px不等于1个物理像素点

 iphone8 :开发尺寸(375X667)px

                  分辨率(750x1334)

                   物理像素比:2

                   1px就可以被手机放大2倍

(3).二倍图,多倍图

1).为社么需要二倍图?

把一个50x50px(css)图片直接放到iphone手机上放大为100x100,会模糊

2).怎么解决

设计图750px的,css写的时候全缩小一半,到了

我们准备放一个100*100的图片,再通过css设置为50*50,到手机里又变为100*100,不会模糊

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0
    minimum-scale=1.0 ,user-scalable=no">
    <title>Document</title>
    <style>
        img {
            height: 50px;
            width: 50px;
        }
    </style>
</head>

<body>
    <img src="../image/a100.jpg" alt="">
    <!-- 一张100*100的图,通过css设置为50*50,这样放大就不会模糊 -->
</body>

</html>

17.响应式布局

(1).媒体查询

1).基本语法

CSS媒体查询(@media)全面解析_css media-CSDN博客

@media mediatype and|not|only (media feature) {
		css代码
}
用@media开头
mediatype 媒体类型,是电脑还是手机还是打印机,收音机,ipad,等等
and not only 和,不,唯一,是连接词
media featrue媒体特性,屏幕多宽啊
			 
mediatype媒体类型解释说明
all用于所有设备
print用于打印机和打印预览
scree

用于电脑屏幕,ipad,手机

media featrue媒体特性解释说明
width定义输出设备中页面可见区域的宽度
min-width定义输出设备中页面最小可见区域的宽度
max-width定义输出设备中页面最大可见区域的宽度

例:

<head>
		<meta charset="utf-8" />
		<title></title>
		<style>
			@media screen and (max-width:800px){
				/* 在我屏幕上,并且最大宽度是800px */
				/* 小于800px */
				body{
					font-size: 10px;
				}
				
				/* 在小于800px的屏幕上字体10px */
			}	
			@media screen and (min-width:700px) {
				/* 在我的屏幕上,并且大于700px */
				body{
					background-color: aqua;
				}
				
			}
		</style>
	</head>
	<body>
		
	</body>
</html>

2).媒体查询+rem实现元素动态大小变化

<head>
		<meta charset="utf-8" />
		<title></title>
		<style>
			/* 从小到大 */
			@media screen and (min-width:320px){
				/* 屏幕大于320px时 */
				html{
					font-size: 50px;
				}
			}
			@media screen and (min-width:640px) {
				/* 屏幕大于640px时 */
				html{
					font-size: 100px;
				}
			}
			.top{
				height: 1rem;
				font-size: .5rem;
				background-color: green;
				color: #ffff;
			}
				
		</style>
	</head>
	<body>
		<div class="top">购物车</div>
	</body>
</html>

3).资源引入

css样式多时,针对不同屏幕,可以通过link 引入对应的样式

例:当我们屏幕大于640以上的,我们让div一行显示2个;小于640px时,div一行一个*/ 
  html文件

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
        <!--当我们屏幕大于640以上的,我们让div一行显示2个*/
			小于640px时,div一行一个*/ 
			建议:媒体查询最好从小到大-->
		<link rel="stylesheet" href="css/new320.css" media="screen and (min-width:320px)">	
		<link rel="stylesheet" href="css/new640.css" media="screen and (min-width:640px)">
	</head>
	<body>
		<div>1</div>
		<div>2</div>
	</body>
</html>

new320.css文件(屏幕大于320px时的样式)

div{
	width: 100%;
	height: 100px;
}
div:nth-child(1){
	background-color: pink;
}
div:nth-child(2){
	background-color: purple;
}

new640.css文件(屏幕大于640px时的样式)

div{
	width: 50%;
	height: 100px;
	float: left;
}
div:nth-child(1){
	background-color: pink;
}
div:nth-child(2){
	background-color: purple;
}

(2).less(css预处理器)

1).less变量

格式:@变量名:值;

规范:必须以@为前缀

          不能包含特殊字符

          区分大小写

例:定义一个粉色变量

2).less编译

编写的less文件html不能直接使用。

需要安装插件继续编译,把less文件编译为css文件

在vocode安装easy less,在保存less文件时会自动生成css文件

less文件:

@color: blue; //颜色变量
@font14: 14px; //字体变量

body {
    background-color: @color;
}

div {
    color: @color;
    font-size: @font14;
}

a {
    font-size: @font14;
}

对应的css文件:

body {
  background-color: blue;
}
div {
  color: blue;
  font-size: 14px;
}
a {
  font-size: 14px;
}

3).less嵌套

(1).子元素样式直接写到父元素里面

(2).伪元素前面加&

例:

html文件

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="my.css">
</head>

<body>
    <div class="header">
        <a href="#">文字</a>
    </div>

    <div class="nav">
        <div class="ni">你好</div>
    </div>
</body>

</html>

less文件

.header {
    width: 100px;
    height: 100px;
    background-color: aqua;

    // 子元素的样式直接写到父元素里面
    a {
        color: red;

        // 伪元素前面加&
        &:hover {
            color: blue;
        }
    }
}

.nav {
    .ni {
        color: green;
    }
}

4).less运算

less文件

除法要加括号

注意单位

// 1.可以直接加减乘除
// 2.运算符左右加空格
// 3.两个数参与运算,如果只有一个数由单位,结果就以这个单位为准
// 4.两个数参与运算,如果2个数都有单位,且不一样,以第一个数的单位为主
@border: 5px + 5;
@basefont: 50px;

html {
    font-size: @basefont;
}

div {
    width: (100px - 10) * 1;
    height: 100px - 10;
    border: @border solid red;
}

// 不支持除法,要加括号
img {
    width: (82rem / @basefont);
    height: (82rem / @basefont);
}

5).rem适配方案

怎么算每个盒子有多少rem?

 一般把屏幕分为10份或15份,然后

屏幕宽度/10=文字大小

原图/文字大小=多少rem

技术方案1:

less,媒体查询,rem

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        @media screen and (min-width:320px) {
            html {
                font-size: 21.33px;
            }
        }

        @media screen and (min-width:640px) {
            html {
                font-size: 50px;
            }
        }

        div {
            width: 2rem;
            height: 2rem;
            background-color: pink;
        }
    </style>
</head>

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

</html>
技术方案2:(简单)

flexble.js

rem

(3).flex布局

Flex 布局语法教程 | 菜鸟教程 (runoob.com)

(4).grid布局

(5).瀑布流

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值