01-CSS

目录

前提

CSS三种引入方式

伪类选择器

基本功能

1.尺寸操作

2.背景处理

3.文本处理

4.位置处理——定位(position)

布局处理

flex

grid(网格布局)

过渡变换动画处理

过渡transition

变换transform

动画


前提

CSS三种引入方式

  1. 内部样式:head标签中的style
    <head>
        <style>
            div{
                width:300px;
            }
        </style>
    </head>
  2. 内联样式:标签里面的style
    <body>
        <p style="color: red;">green</p>
    </body>
  3. 外链式:link
    <head>
        <link rel="stylesheet" href="style.css">
    </head>

伪类选择器

a:link----------定义正常链接的样式

a:visited-------定义访问过链接的样式

a:hover------鼠标悬停时候的链接样式

a:active-----鼠标按下时的链接样式

基本功能

1.尺寸操作

1、宽高—— width,height

2、边框—— border:边框尺寸 边框类型 边框颜色

        dotted:点线边框  dashed:虚线  solid:实线

3、边框圆角—— border-radius: 圆角尺寸(例如:8px即为以8px的长度为半径画一个圆与两边相切)

4、元素内外边距

        内边距:边框与内容之间的距离——padding:上下内边距 左右内边距

        现象:超过外部容器大小

<!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>
        .box{
            width: 100%;
            border: 2px dashed green;
            border-radius: 10px;
            padding: 15px 30px;
            box-sizing: border-box;
        }
    </style>
</head>
<body>
    <div class="box">
        <h3>huilangting</h3>
        <p>该剧讲述了深夜回廊亭突然大火,一名男子葬身火海,姜远星严重烧伤毁容;阳光帅气的程成出现在姜远星的生命中,两人的命运似乎也被这场大火改变的故事</p>
    </div>
</body>
</html>

        原因:在宽度为100%的基础上加上了左右内边距的宽度,和以为div总宽度,故超出了页面

        解决方法:box-sizing: border-box(调节页面呈现方式,改变宽高计算方式)

        外边距:边框外部与其他元素间的距离—— margin: 距离

<head>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .box{
            width: 500px;
            border: 2px dashed green;
            /* height: 250px; */
            /* 水平居中 */
            /* margin: 0 auto; */
            /* 这样设置垂直居中无效,要用数值设置 */
            /* margin: auto 0; */
            /* 靠右 */
            margin-left: auto;        
        }
    </style>
</head>

        margin塌陷问题 

        第一个子元素的margin-top以及最后一个子元素的margin-bottom均会作用到其父元素上

        解决方法:

                1. 给其父元素设置边框

                2.给其父元素设置padding

                3.给其父元素设置overflow:hidden

5、清除浏览器默认样式——通配符*

<head>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
    </style>
</head>

2.背景处理

1、背景颜色—— background-color

2、背景图片—— background-image: url()

3、阴影—— box-shadow: 水平方向的偏移量 竖直方向的偏移量 晕染宽度 颜色

3.文本处理

1、颜色—— color: 

2、文本缩进——text-indent: 2em(首行缩进两个字符,em表示当前单个文字的大小)

<head>
    <style>
        .box p{
            color: #666;
            text-indent: 2em;
        }
    </style>
</head>

3、字体大小设置—— font-size

4、字体设置—— font-family

5、字体粗细设置——font-weight

<style>
    .box h3{
        font-size: 30px;
        font-family: '黑体';
        font-weight: normal;
    }
</style>

6、修改元素背景颜色——background-color

7、修改元素高度——height

8、修改行高——line-height

当7、8所设置的值相同时,元素内部的文字处于垂直居中

9、修改文字的水平位置——text-align: center(文字水平居中)

10、文字阴影——text-shadow

11、文本装饰——text-decoration: 装饰类型 颜色 位置

12、文字垂直显示—— writing-mode: vertical-lr(lr:从左到右)

        英文竖直显示—— text-orientation: upright;

13、文字溢出—— overflow

        overflow:hidden;----溢出隐藏

        overflow: auto;----自适应(内容过多会自动出滚动条)

        text-overflow: ellipsis;---省略号

4.位置处理——定位(position)

position:absolute即为绝对定位

<style>  
    .box span{
        writing-mode: vertical-lr;
        text-orientation: upright;
        position: absolute;
        top: 20px;
        left: 10px;
    }
</style>

此时该位置的参考对象为页面的左顶点(而不是其父元素)

若需要参考其父标签来设置位置,则需要将其父标签设置为相对定位(position:relative) 

相对定位不会更改元素自身位置

position:fixed——固定定位,对象不会随着滚动条移动

5.隐藏元素

方法一:display:none

方法二:visibility:hidden(呈现——visibility:show)

区别:display占位;visibility不占位

属性的继承

布局处理

改变网页的布局

flex

适用于一维布局方案

1、指定容器——display:flex(弹性布局)

2、在垂直方向进行元素位置调整——align-items    (center:垂直居中;flex-start:子元素在上方;flex-end:子元素在底部)

3、在水平方向进行元素位置调整——justify-content    (center:垂直居中;flex-start:子元素在上方;flex-end:子元素在底部)

4、调整各元素之间的呈现比例——flex 

<!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>
        * {
            margin: 0;
            padding: 0;
        }

        .flex-container{
            display: flex;
            /* width: 100%; */
            /* 最大宽度 */
            max-width: 1300px;
            /* 最小宽度 */
            min-width: 500px;
            background-color: #fdfdc8;
            /* 水平居中 */
            margin: 0 auto;
            height: 666px;
            /* 子元素居中 */
            /* align-items: center; */
            /* 子元素在上方 */
            /* align-items: flex-start; */
            /* 子元素在底部 */
            /* align-items: flex-end; */
            /* justify-content: center; */

        }
        .flex-item{
            padding: 15px;
            border: 1px solid #ccc;
            border-radius: 6px;
            background-color: #fac1c1;
            /* max-height: 555px; */
            /* max-width: 200px; */
            /* 三个盒子的呈现比例为1:1:1 */
            /* flex: 1; */
        }
        .flex-item:nth-child(2){
            /* 1:3:1 */
            /* flex: 3; */
            min-width: 100px;
        }
        .flex-item:nth-child(2n+1){
            width: 400px;
        }
    </style>
</head>

<body>
    <div class="flex-container">
        <div class="flex-item">
            <h3>HuangZihongfan</h3>
            <p>黄子弘凡</p>
            <span>黄子弘凡-Lars</span>
        </div>

        <div class="flex-item">
            <h3>huangzi1</h3>
            <p>黄子弘凡出生于音乐世家</p>
        </div>
        <div class="flex-item">
            <h3>huangzi2</h3>
            <p>2019年1月13日,受邀出席“记忆·乡愁”廖昌永个人独唱音乐会</p>
        </div>
    </div>
</body>

</html>

grid(网格布局)

适用于二维布局方案,适合创造规则的、多行多列的结构

1、指定容器——display:grid

2、设置各列的宽度——grid-template-columns  (后面写多少值即多少列)

        冒号后面数值的表现形式:1:具体数值加单位  grid-template-columns: 200px 300px

                                                   2: 百分比  grid-template-columns:20% 30% 50%

                                                   3:使用占位符(fr)表示比例:

                                                        grid-template-columns:1fr 3fr 2fr(即1:3:2)

                                                   4、使用repeat表示重复  grid-template-columns:repeat(3, 1fr)

                                                        意思是1fr 1fr 1fr,即1:1:1

                                                   5、自动填充,不限制列数  

                                                        grid-template-columns:repeat(auto-fill,200px)

                                                        意思是根据页面宽度自动填充列,每列宽度为200px,页面宽                                                            度不同,列数则不同

3、设置各行的宽度——grid-template-rows

过渡变换动画处理

过渡transition

transition: 运动对象 运动时间 运动方式;(transition: width 1s;即为让宽度变化这个运动持续1s) 采用默认的运动方式,若要指定多个运动对象,则用逗号隔开,                                                      例如transition: width 1s, height 2s;若所有运动对象统一,则用all表示运动对象

运动方式:1、linear  匀速运动

                  2、ease   变速运动

                  3、ease-in 加速运动

                  4、ease-in-out  减速运动

                  ······

<!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>
        *{
            padding: 0;
            margin: 0;
        }
        .transition-box{
            width: 100px;
            height: 100px;
            background-color: orange;
            transition: width 4s ease-in-out;
        }
        .transition-box:hover{
            width: 400px;
        }
    </style>
</head>
<body>
    <div class="transition-box"></div>
</body>
</html>

变换transform

平移

1、transform: translate(水平方向移动的距离,垂直方向移动的距离);

transform: translate(100px,20px);即为水平方向移动100px,垂直方向移动20px

2、transform: translateX(水平方向移动的距离) translateY(垂直方向移动的距离);

旋转

3、transform: rotate(90deg); 绕中心旋转90度

4、transform-origin: right bottom;  设置旋转中心为右下角,缩放的固定点,默认为中心,可以用top  bottom   left  right  center  百分比等表示

     不能在交互时设置,必须在元素本身属性上设置,否则会发生偏移

5、transform:scale(.5);  垂直水平缩放至本身的0.5倍

      transform:scale(.5,2);  水平方向缩小至0.5倍,垂直方向扩大至本身的2倍

6、transform: skew(30deg,10deg);  水平方向倾斜30度,垂直方向倾斜10度

     transform: skew(-30deg);水平反方向倾斜30度

7、3D变换

     条件:有特定容器,用来设置指定元素将以3D的状态来进行展示

     前期准备:对容器设置必要属性

        1、transform-style: preserve-3d;   表示内部的子元素将以3D的模式做显示

        2、perspective: 500px; 确定视口与动画的距离(页面中能看到的部分)

        两者缺一不可

    页面中水平向右为X轴正方向,竖直向下为Y轴正方向,垂直向外为Z轴正方向

    transform: translate3d(0,0,100px);  沿着Z轴正方向移动100px

    transform: rotate3d(1,0,0,45deg);   以X轴为轴线旋转45度

    transform: rotate3d(0,Y,0,45deg);   以Y轴为轴线旋转45度

    transform: rotate3d(0,0,1,45deg);   以Z轴为轴线旋转45度

<!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>
        * {
            padding: 0;
            margin: 0;
        }

        .container{
            /* position: relative; */
            width: 200px;
            margin: 0 auto;
            /* 表示内部的子元素将以3D的模式做显示,实现纵深的变换 */
            transform-style: preserve-3d;
            /* 视口与动画的距离 */
            perspective: 500px;
            transition: all 1s;
            
        }
        .container:hover{
            transform: rotate3d(0,1,0,180deg);
        }
        .transform-box {
            width: 200px;
            height: 200px;
            background-color: rgb(243, 201, 201);
            transition: all 1s;
            position: absolute;
            /* left: 100px;
            top: 100px; */
            /* transform-origin: right bottom; */
        }

        .transform-box:hover {
            /* transform: translate(100px,20px); */
            /* transform: translateX(100px) translateY(20px); */
            /* transform: rotate(60deg); */
            /* transform-origin: right bottom;不能在交互时设置 */
            /* transform:scale(.5,2); */
            /* transform: skew(30deg, 10deg); */
            /* transform: translate3d(0,0,100px); */
            /* transform: rotate3d(0,1,1,45deg); */
            /* transform: translateZ(100px); */

        }
        .test{
            position: absolute;
            background-color: yellow;
            width: 200px;
            height: 200px;
            transform: translateZ(-100px);
        }
        
    </style>
</head>

<body>
    <!-- 给transform-box设置一个容器,来支持3D变换 -->
    <div class="container">
        <div class="transform-box">
            <p>ejjf</p>
        </div>
        <div class="test"></div>
    </div>
</body>

</html>

动画

定义关键帧动画——  @keyframes 动画名称{}

运行/使用设置的关键帧动画——  animation:动画名 时间值 inifinite   (加上infinite即代表动画一直运行)

<!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>
        .animation-box{
            width: 300px;
            height: 300px;
            background-color: rgb(249, 249, 155);
            animation: changeColor 5s ;
        }
        @keyframes changeColor {
            0%{
                background-color: rgb(247, 247, 27);
            }
            35%{
                background-color: rgb(211, 102, 211);
            }
            75%{
                background-color: rgb(249, 9, 9);
            }
            100%{
                background-color: rgb(244, 244, 142);
            }
        }
    </style>
</head>
<body>
    <div class="animation-box"></div>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值