CSS3学习笔记(四)

2019-08-26  本文已影响0人  dev_winner
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>属性选择器</title>
    <style type="text/css">
    div {
        margin: 30px;
    }
    /*设置元素可用的样式*/
    input[type="text"]:enabled {
        border: 1px solid #f36;
        box-shadow: 0 0 5px #f36;
    }
    /*设置元素不可用的样式*/
    input[type="text"]:disabled {
        box-shadow: none;
        border: 1px solid black; 
    }
    </style>
</head>
<body>
    <form action="#">
        <div>
            <!-- 标签的 for 属性中的值与相关控件的 id 属性值一定要相同。 -->
            <label for="enabled">可用输入框:</label>
            <input type="text" id="enabled" />
        </div>
        <div>
            <label for="disabled">禁用输入框:</label>
            <input type="text" id="disabled" disabled="disabled" />
            <!-- 设置不可用 disabled属性值-->
        </div>
    </form>
</body>
</html>
设置可用状态的元素样式
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>属性选择器</title>
    <style type="text/css">
    form {
        border: 1px solid #ccc;
        padding: 20px;
        width: 300px;
        margin: 30px auto;
    }
    .wrapper {
        margin-bottom: 10px;
    }
    .box {
        display: inline-block;
        width: 30px;
        height: 30px;
        margin-right: 10px;
        /*设置父元素为相对定位*/
        position: relative;
        background: orange;
        /*设置元素的垂直对齐方式:
        把此元素放置在父元素的中部。*/
        vertical-align: middle;
        border-radius: 100%;
    }
    .box input {
        /*设置input元素的透明度,取值为0~1*/
        opacity: 0;
        /*设置子元素为绝对定位*/
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        /*设置元素的堆叠顺序:使input按钮在span的上一层,否则点击区域会出现不灵敏的情况*/
        z-index: 100;
    }
    /*自定义内圆圈样式*/
    .box span {
        /*span为行内元素,改为块级元素可设置宽高等*/
        display: block;
        width: 10px;
        height: 10px;
        border-radius: 100%;
        position: absolute;
        background: #fff;
        top: 50%;
        left: 50%;
        margin: -5px 0 0 -5px;
        /*设置span在input元素下一层*/
        z-index: 1;
    }
    input[type="radio"]+span {
        opacity: 0;

    }
    /*设置被选中的元素透明度为1,即将其显示出来*/
    input[type="radio"]:checked+span {
        opacity: 1;
    }
    </style>
</head>
<body>
    <form action="#">
        <div class="wrapper">
            <div class="box">
                <input type="radio" checked="checked" id="boy" name="1" /><span></span>
            </div>
            <label for="boy">男</label>
        </div>
        <div class="wrapper">
            <div class="box">
                <input type="radio" id="girl" name="1" /><span></span>
            </div>
            <label for="girl">女</label>
        </div>
    </form>
</body>
</html>
设置单选框样式
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>::selection选择器</title>
    <style type="text/css">
    ::selection {
        background: orange;
        color: white;
    }
    </style>
</head>
<body>
    <p>用鼠标选中这行文字,你将会看到不一样的效果!</p>
</body>
</html>
设置鼠标选中文本时的文本效果
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>属性选择器</title>
    <style type="text/css">
    form {
        width: 300px;
        padding: 10px;
        border: 1px solid #ccc;
        margin: 50px auto;
    }
    form>div {
        margin-bottom: 10px;
    }
    input[type="text"] {
        border: 1px solid orange;
        padding: 5px;
        background: #fff;
        border-radius: 5px;
    }
    /*设置只读状态的标签的样式*/
    input[type="text"]:read-only {
        border-color: #ccc;
    }
    textarea:read-only {
        border: 1px solid #ccc;
        height: 50px;
        resize: none;
        background: #eee;
        border-radius: 5px;
    }
    /*设置非只读状态的标签的样式*/
    input[type="text"]:read-write{
        border-color: #f36;
    }
    </style>
</head>
<body>
    <form action="#">
        <div>
            <label for="name">姓名:</label>
            <input type="text" name="name" id="name" placeholder="张三" />
        </div>
        <div>
            <label for="address">地址:</label>
            <input type="text" name="address" id="address" placeholder="中国深圳" readonly="readonly" />
            <!-- 规定文本区域为只读 -->
        </div>
        <div>
            <label for="comment">评论:</label>
            <textarea name="comment" id="" cols="30" rows="10" readonly="readonly" placeholder="这里的文本区域只读不可写!"></textarea>
        </div>
    </form>
</body>
</html>
设置只读和非只读文本区域的样式
.clearfix::before,
.clearfix::after {
    content: "."; /* 可以是空串,但不能不写*/
    display: block; /*只有作为块级元素才能清除浮动*/
    height: 0;
    visibility: hidden; /*规定元素是否可见*/
}
.clearfix:after {clear: both;} /*清除左浮动和右浮动,若只清除左浮动就写clear:left,右同理*/
.clearfix {zoom: 1;}
<!DOCTYPE html>
<html>
<head>
    <meta charset=utf-8 />
    <title>before、after</title>
    <style>
    .box h3 {
        /*文字居中*/
        text-align: center;
        /*父元素为相对定位*/
        position: relative;
        /*距离当前所在盒子的顶部为80像素*/
        top: 80px;
    }
    .box {
        /*盒子宽*/
        width: 70%;
        /*盒子高*/
        height: 200px;
        /*背景颜色*/
        background: #fff;
        /*外边距:上下40px,左右自适应*/
        margin: 40px auto;
    }
    .effect {
        /*父元素为相对定位*/
        position: relative;
        -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3), 0 0 40px rgba(0, 0, 0, 0.1) inset;
        -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3), 0 0 40px rgba(0, 0, 0, 0.1) inset;
        /*盒子阴影*/
        box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3), 0 0 40px rgba(0, 0, 0, 0.1) inset;
    }
    /*同时设置before和after,增强阴影效果*/
    .effect::before,
    .effect::after {
        /*插入的内容为空*/
        content: "";
        position: absolute;
        /*隐藏在div下一层,作为阴影层*/
        z-index: -1;
        -webkit-box-shadow: 0 0 20px rgba(0, 0, 0, 0.8);
        -moz-box-shadow: 0 0 20px rgba(0, 0, 0, 0.8);
        box-shadow: 0 0 20px rgba(0, 0, 0, 0.8);
        /*注意必须设置上右下左四个方向的位置,否则浏览器不能解析该样式*/
        top: 50%;
        bottom: 0;
        left: 10px;
        right: 10px;
        -moz-border-radius: 100px / 10px;
        /*设置圆角:水平半径/垂直半径*/
        border-radius: 100px / 10px;
    }
    </style>
</head>
<body>
    <!-- 引用两个类,effect作为阴影层,便于其他元素的引用,以降低代码的冗余 -->
    <div class="box effect">
        <h3>Shadow Effect </h3>
    </div>
</body>
</html>
设置伪元素before和after

CSS3变形

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>变形与动画</title>
    <style type="text/css">
    .wrapper {
        margin: 100px auto;
        width: 300px;
        height: 200px;
        border: 2px dotted blue;
    }
    .wrapper div {
        width: 300px;
        height: 200px;
        line-height: 200px;
        text-align: center;
        background: green;
        color: #fff;
        -webkit-transform: rotate(-20deg);
        -moz-transform: rotate(-20deg);
        /*逆时针旋转20度*/
        transform: rotate(-20deg);
    }
    .wrapper span {
        /*改为块级元素,将文本旋转回到原来水平位置。*/
        display: block;
        -webkit-transform: rotate(20deg);
        -moz-transform: rotate(20deg);
        /*顺时针选择20度*/
        transform: rotate(20deg);
    }
    </style>
</head>
<body>
    <div class="wrapper">
        <div><span>我不想旋转(^_^)</span></div>
    </div>
</body>
</html>
设置元素旋转
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>变形与动画</title>
    <style type="text/css">
    .wrapper {
        width: 300px;
        height: 100px;
        /*边界为点线形式*/
        border: 2px dotted red;
        margin: 30px auto;
    }
    .wrapper div {
        width: 300px;
        height: 100px;
        line-height: 100px;
        text-align: center;
        /*字体颜色*/
        color: #fff;
        background: green;
        -webkit-transform: skew(45deg);
        -moz-transform: skew(45deg);
        /*Y轴逆时针倾斜45度*/
        transform: skew(45deg);
    }
    .wrapper span {
        display: block;
        /*Y轴顺时针倾斜45度*/
        -webkit-transform: skew(-45deg);
        -moz-transform: skew(-45deg);
        transform: skew(-45deg);
    }
    </style>
</head>
<body>
    <div class="wrapper">
        <div><span>我不想被扭曲(^_^)</span></div>
    </div>
</body>
</html>
横向倾斜 设置缩放
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>变形与动画</title>
    <style type="text/css">
    /*不知道宽度和高度的元素情况下实现水平、垂直居中。*/
    .wrapper {
        padding: 20px;
        background: orange;
        color: #fff;
        position: absolute;
        top: 50%;
        left: 50%;
        border: 1px solid black;
        border-radius: 5px;
        -webkit-transform: translate(-50%, -50%);
        -moz-transform: translate(-50%, -50%);
        /*往上(x轴),左(y轴)移动自身宽高的 50%,以使其居于中心位置。*/
        transform: translate(-50%, -50%);
    }
    /*简单的移动*/
    .wrapper1 {
        float: left;
        width: 200px;
        height: 200px;
        border: 2px dotted red;
        margin: 20px auto;
    }
    .wrapper1 div {
        width: 200px;
        height: 200px;
        line-height: 200px;
        text-align: center;
        background: orange;
        color: #fff;
        -webkit-transform: translate(50px, 100px);
        -moz-transform: translate(50px, 100px);
        /*从当前元素位置向右移动50px,向下移动100px*/
        transform: translate(50px, 100px);
    }
    </style>
</head>
<body>
    <div class="wrapper">
        我不知道我的宽度和高是多少,我要实现水平垂直居中
    </div>
    <div class="wrapper1">
        <div>我向右向下移动</div>
    </div>
</body>
</html>
移动元素
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>变形与动画</title>
    <style type="text/css">
    .wrapper {
        width: 300px;
        height: 200px;
        border: 2px dotted red;
        margin: 40px auto;
    }
    .wrapper div {
        width: 300px;
        height: 200px;
        background: orange;
        -webkit-transform: matrix(1, 0, 0, 1, 50, 50);
        /*参数1:宽度为比例1表示原大小,      
          参数2:上下倾斜:0就是不倾斜,
                        1就是2倍,
                        2就是3倍,      
          参数3:左右倾斜: 含义同上,    
          参数4:高度比例1就是原大小,
          参数5:X轴上的像素位移,X方向就是左右,
          参数6:Y轴上的像素位移,Y方向就是上下*/
        transform: matrix(1, 0, 0, 1, 50, 50);
    }
    </style>
</head>
<body>
    <div class="wrapper">
        <div></div>
    </div>
</body>
</html>
设置matrix transform-origin的取值
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>变形与动画</title>
    <style type="text/css">
    .wrapper {
        width: 150;
        height: 150px;
        float: left;
        margin: 100px;
        border: 2px dotted red;
        line-height: 150px;
        text-align: center;
    }
    .wrapper div {
        background: orange;
        /*顺时针旋转45度*/
        -webkit-transform: rotate(45deg);
        transform: rotate(45deg);
    }
    .transform-origin div {
        /*改变元素原点到左上角*/
        -webkit-transform-origin: left top;
        transform-origin: left top;
    }
    </style>
</head>
<body>
    <div class="wrapper">
        <div>原点在默认位置处</div>
    </div>
    <div class="wrapper transform-origin">
        <div>原点重置到左上角</div>
    </div>
</body>
</html>
修改元素原点

参考文章

上一篇下一篇

猜你喜欢

热点阅读