css

Cascading Style Sheets层叠级联样式表

格式

选择器{ 
    声明1;
    声明2;
    声明3;
}

外部引用

<head>
    <link rel="stylesheet" href="../css/style.css">
</head>

选择器

基本选择器

标签选择器

<head>
    <style>
        h1{
            color: blue;
        }
    </style>
</head>
<body>
<h1>标签选择器</h1>
</body>

class选择器

<head>
    <style>
        .a{
            color: blue;
        }
        .b{
            color: red;
        }
    </style>
</head>
<body>
<h1 class="a">类选择器</h1>
<h1 class="b">类选择器</h1>
<h1>类选择器</h1>
</body>

id选择器

<head>
    <style>
        #a{
            color: blue;
        }
        #b{
            color: red;
        }
    </style>
</head>
<body>
<h1 id="a">类选择器</h1>
<h1 id="b">类选择器</h1>
<h1>类选择器</h1>
</body>

标签可以有相同的class,但id唯一,这是class选择器与id选择器的区别。

同一个标签,id选择器样式>class选择器>标签选择器。

层次选择器

后代选择器

在某个元素的后面的某元素

<head>
    <style>
        //ul标签后面的所有p标签样式
        ul p {
            color: red;
        }
    </style>
</head>
<body>
<p>p1</p>
<p>p2</p>
<ul>
    <li>
        <p>p3</p>
    </li>
    <li>
        <p>p4</p>
    </li>
</ul>
</body>

子选择器

某元素的后一代

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        //body标签下一代中的p标签
        body>p {
            color: red;
        }
    </style>
</head>
<body>
<p>p1</p>
<p>p2</p>
<ul>
    <li>
        <p>p3</p>
    </li>
    <li>
        <p>p4</p>
    </li>
</ul>
</body>

相邻选择器

同一层次的元素的下一个元素

<head>
    <style>
		//和p2同层次,且是p2下一个的p标签
        .active + p {
            color: red;
        }
    </style>
</head>
<body>
<p>p1</p>
<p class="active">p2</p>
<p>p3</p>
</body>

通用选择器

同一层次的元素后面的所有元素

<head>
    <style>
        //和p2同层次,且在p2后面所有的p标签
        .active ~ p {
            color: red;
        }
    </style>
</head>
<body>
<p>p1</p>
<p class="active">p2</p>
<p>p3</p>
<ul>
    <li>
        <p>p4</p>
    </li>
    <li>
        <p>p5</p>
    </li>
</ul>
<p>p6</p>
</body>

全部都在对应元素向下选择,但不包括该元素

结构伪类选择器

格式

标签:具体位置{
   声明
}

第一个子类和最后一个子类

<head>
    <style>
        //ul标签后代的第一个li标签
        ul li:first-child{
            color: red;
        }
        //ul标签后代的最后一个li标签
        ul li:last-child{
            color: green;
        }
        <!--如果有多个ul,每个ul的第一个和最后一个元素都会被选中-->
    </style>
</head>
<body>
<ul>
    <li>li1</li>
    <li>li2</li>
    <li>li3</li>
</ul>
</body>

定位到父元素选择第一个元素

<head>
    <style>
        //选中p元素的父亲的第一个孩子,这个孩子元素必须是p元素
        p:nth-child(1) {
            color: red;
        }
    </style>
</head>
<body>
<p>p1</p>
<p>p2</p>
</body>

定位到父元素选择类型为该元素的第一个元素

<head>
    <style>
        //选择p元素的父亲元素后代中第一个类型为p的元素
        p:nth-of-type(1) {
            color: red;
        }
    </style>
</head>
<body>
<h1>h1</h1>
<p>p1</p>
<p>p2</p>
</body>

p:nth-child(1)按顺序选择,如果p元素的父亲元素后代第一个元素不是p元素,样式将无效

p:nth-of-type(1)按类型选择,会定位到p元素的父亲元素后代第一个类型为p的元素。

属性选择器

格式

标签[标签属性(=值)]{
	声明
}

例1:选中a标签中有id属性的元素

<head>
    <style>
        a[id] {
            color: red;
        }
    </style>
</head>
<body>
<a href="" id="">1</a>
<a href="">1</a>
</body>

例2:选中a标签中id属性为first的元素

<head>
    <style>
        a[id=first] {
            color: red;
        }
    </style>
</head>
<body>
<a href="" id="first">1</a>
<a href="" id="last">1</a>
</body>

例3:选中a标签中class属性为links item的元素

<head>
    <style>
        a[class="links item"] {
            color: red;
        }
    </style>
</head>
<body>
<a href="" class="links item">1</a>
<a href="" class="links" >1</a>
</body>

因为id是唯一的,所以id带值可以没有"",但class需要有引号,参考例2,例3。

例4:选中a标签中class属性含有links的元素

<head>
    <style>
        a[class*="links"] {
            color: red;
        }
    </style>
</head>
<body>
<a href="" class="links item">1</a>
<a href="" class="item">1</a>
</body>

=表示属性内的值绝对等于引号内的值,*=表示属性内的值含有引号内的值,参考例3,例4

例5:选中a标签中href属性以http开头的元素(利用正则表达式)

<head>
    <style>
        a[href^=http] {
            color: red;
        }
    </style>
</head>
<body>
<a href="https:www.baidu.com">1</a>
<a href="../resource/image/1.jpg">1</a>
</body>

例6:选中a标签中href属性以com结尾的元素(利用正则表达式)

<head>
    <style>
        a[href$=com] {
            color: red;
        }
    </style>
</head>
<body>
<a href="https:www.baidu.com">1</a>
<a href="../resource/image/1.jpg">1</a>
</body>

美化页面元素

span

将字体重点突出(感觉和div差不多,但div包含内容更多)

<head>
    <style>
        #a{
            font-size: 50px;
        }
    </style>
</head>
<body>
Hello <span id="a">World!</span>
</body>

字体样式

font-style: oblique;			//字体风格,斜体
font-weight: bold;              //字体粗细(宽度),粗
line-height: 20px;				//字体行高
font-size: 40px;                //字体大小
font-family: Arial,宋体;        //字体样式,英文和中文
color: red;                     //字体颜色,红
font: oblique bold 20px/50px 宋体;      //字体风格 字体粗细 字体行高/字体大小 字体样式

文本样式

background: rgba(0,0,255,0.4);      //背景颜色
text-align: center;     			//排版,居中
text-indent: 2em;      				//首行缩进
line-height: 50px;     				//行高,改变行高可以改变字段间距
text-decoration: underline;     	//下划线
text-decoration: line-through;      //删除线
text-decoration: overline;      	//上划线
vertical-align: middle;         	//和参照物水平对齐

超链接伪类

/*鼠标触碰后效果:字体变黄,字体变大*/
a:hover{
	color: yellow;
	font-size: 50px;
}
/*鼠标点击效果:背景变蓝*/
a:active{
	background: blue;
}
/*一般a标签也会去除下划线*/
text-decoration: none;

阴影效果

/*text-shadow: 阴影颜色 水平偏移,垂直偏移,阴影半径*/
text-shadow: green 10px -10px 2px;	//一个向右上角偏移10px,半径为2px的绿色阴影

列表

list-style:
none        去除样式
circle      空心圆
decimal     数字,有序列表
square      正方形

背景

<style>
    div{
        width: 720px;
        height: 792px;
        background-image: url("../resources/image/1.jpg");
        background-position: 200px 10px;		//图片定位
        background: linear-gradient(19deg,#21D4FD 0%,#B721FF 100%);		//渐变
        /*https://www.grabient.com/*/
    }
</style>
/*必须要写宽度和高度才能有背景图,默认是图片全部平铺*/
background-repeat: repeat-x;		//水平平铺
background-repeat: repeat-y;		//垂直平铺
background-repeat: no-repeat;		//不平铺,也需要有宽度高度
/*background: 背景颜色 图片路径 图片水平偏移 图片垂直偏移 平铺方式*/
background: red url("../resources/image/2.jpg") 200px 10px no-repeat;

盒子模型

在这里插入图片描述

  • margin:外边距
  • border:边框
  • padding:内边距
  • 盒子大小:margin+border+padding+内容大小

边框

/*border: 粗细 样式 颜色*/
border: 1px solid red;
border-radius: 50px;		//边框圆角
/*box-shadow: 阴影颜色 水平偏移,垂直偏移,阴影半径*/
box-shadow: green 10px -10px 2px;	//盒子阴影

border-style: 
solid		//边框实线
dashed		//边框虚线

border-radius: 50px;					//四角同一弧度
border-radius: 50px 100px;				//左上右下50,右上左下100
border-radius: 50px 100px 150px 200px;	//左上50,右上100,右下150,左下200,顺时针
width=heigth=2*border-radius == 圆形
width=2*heigth=border-radius: heigth heigth 0 0 == 向上半圆
width=heigth=border-radius: heigth 0 0 0 == 左上扇形

外内边距

Html本身有的标签会有个默认的外边距,一般会手动写为0

body{margin: 0px;}
margin: 0px;		//无外边距
margin: 0px auto;	//上下外边距为0,左右外边距居中对齐
margin: 10px 20px 30px 40px;	//上外边距为10,右外边为20,下外边距为30,右外边距40,顺时针

外边距与内边距操作一样

浮动

display

block		//变为块元素,独占一行
inline		//行内元素
inline-block	//保持块元素但可以内联保证下一个元素可以在同一行

float

left		//向左浮动
right		//向右浮动

clear

left		//左侧不允许有浮动元素
right		//右侧不允许有浮动元素
both		//两侧不允许有浮动元素
none		

overfloat

hidden		//修剪内容溢出
scroll		//滚动条

父级边框塌陷

我的理解就是最外围的边框没有把内容包括起来。

解决办法

  1. 增加父级元素高度(外边框高度直到包含所有内容)

    #father{
        border: 1px red solid;
        heigth: 1000px;
    }
    
  2. 设置一个空的div标签,清除浮动

    <style>
        #clear{
            clear: both;
            margin: 0;
            padding: 0;
        }
    </style>
    <div id="father">
        <div id="clear"></div>
    </div>
    
  3. overfloat

    #father{
        border: 1px red solid;
        overflow: hidden;
    }
    
  4. 父类添加伪类 :after

    #father:after{
        content: '';
        display: block;
        clear: both;
    }
    

定位

相对定位

position: relative		//相对原来的位置偏移,但原来的位置会被保留
/*下面要加上相对原来位置偏移多少
负数表示与相对方向相同,正数表示与相对方向相反*/
top: -20px;		//向上偏移20
left: 10px;		//向右偏移10

绝对定位

  • 相对于父级元素定位

    //父元素定位但不偏移办法
    #father{
        position: relative;
    }
    
  • 没有父级元素定位则相对于浏览器边框定位

position: absolute;			//原来位置不保留
/*下面要加上相对原来位置偏移多少
负数表示与相对方向相同,正数表示与相对方向相反*/
top: -20px;		//向上偏移20
left: 10px;		//向右偏移10

固定定位

position: fixed;		//相对浏览器定位,跟随滚动条移动
/*需要确定固定在哪里,下面是固定在右下角*/
right: 0;
bottom:0;

opacity

opacity: 0.5;			//背景透明度

Z-index

类似图层:当两个标签叠加在同一位置时使用,确定其中一个标签在另一个标签之上。

<head>
    <style>
        #app{
            padding: 0;
            margin: 0;
            width: 730px;
            overflow: hidden;
            font-size: 50px;
            line-height: 100px;
            border: 1px solid red;
            position: relative;
        }
        .l,.b{
            width: 730px;
            height: 100px;
            position: absolute;
            top:700px;
        }
        .l{
            color: white;
            z-index: 1;
        }
        .b{
            background: black;
            opacity: 0.5;
        }
    </style>
</head>
<body>
<div id="app">
    <ul>
        <li><img src="../resources/image/1.jpg" alt=""></li>
        <li class="l">这是第一段文字</li>
        <li class="b"></li>
    </ul>
</div>
</body>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值