css3基础点(1)

css3选择器

  属性选择器         IE6以下不兼容
        li[class]       有属性
        *li[class=abc]  属性和值是否相等    "abc"
        li[class~=abc]  包含              "abc ab"
        li[class^=abc]  首字母
        li[class$=abc]  尾字母
        li[class|=a]    以值开头的元素
        li[class*=abc]  字符串中有值
  伪类选择器
        *obj:nth-child(1)       选择某一个

        obj:nth-child(odd)      奇数
        obj:nth-child(even)     偶数

        obj:nth-child(n)        全部
        obj:nth-child(2n)       几倍数
        obj:nth-last-child(2)   从后往前数

        obj:first-child         第一个
        obj:last-child          最后一个

        input:focus             获取焦点
        p:only-child            父级下只能存在一个元素
        div:empty               空元素

        input:enabled           可用
        *input:disabled         不可用 

        ::selection             选择的文本样式
        *:root                  根元素 html
*css3新增的样式
    # 圆角
        border-radius
            50%     正圆   单位都可以用
            一个值         四个方向
            两个值     左上/右下 右上/左下
            三个值         左上 右上/左下    右下
            四个值     左上 右上 右下 左下  顺时针

    # transition:1s all ease;
        1s      运动时间
        all     运动样式
        ease    运动类型

    # 浏览器规则
        chrome              谷歌
            -webkit-
        firefox             火狐
            -moz-
        ie                  IE
            -ms-
        opera               欧朋
            -o-
        不加前缀            标准

    # 目的:移动端开发
        -webkit-        兼容

    # 文字阴影
        text-shadow:1px 1px 2px #000;
            x
            y
            模糊度
            阴影颜色
例子:

    <style>
        div {
            -webkit-text-stroke: 2px red;
            font-family: "微软雅黑";
            font-size: 50px;
            color: #fff;
        }
    </style>

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

    # 颜色表示方法
        rgba(0,0,0,0.1)
            r   red
            g   green
            b   blue
            a   alpha
    # 文字描边
        -webkit-text-stroke:2px red;
            描边宽度
            描边颜色
例子:
<style>
    div {
        -webkit-text-stroke: 2px red;
        font-family: "微软雅黑";
        font-size: 50px;
        color: #fff;
    }
</style>

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


    #块阴影
        box-shadow:0px 0px 10px 10px #000 inset;
            x
            y
            模糊度
            扩充阴影值
            颜色
            内阴影
例子:
<style>
        div {
            width: 200px;
            height: 200px;
            background: #ccc;
            box-shadow: 0px 0px 10px 10px #000 inset;
        }
</style>

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

    #渐变
        线性渐变
            background:-webkit-linear-gradient(left,red,green)
            left top right bottom /45deg 角度
            red起始颜色
            green结束颜色
例子:
    <style>
        div {
            width: 200px;
            height: 200px;
            background: -webkit-linear-gradient(-45deg, red, green);
        }
    </style>

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


        # 重复渐变
            background:-webkit-repeating-linear-gradient(-45deg,red 0,red 10%,blue 10%,blue 20%);

例子:
    <style>
        div {
            width: 40px;
            height: 200px;
            background: -webkit-repeating-linear-gradient(-45deg, red 0, red 10%, blue 10%, blue 20%);
        }
    </style>
    <body>
    <div></div>
    </body>


        # 径向渐变
            background:-webkit-radial-gradient(red,green);

        # 普通元素可编辑
             contenteditable="true"
    # 蒙版
        -webkit-mask:url(../img/meizi.jpg) no-repeat x y;
    # 背景图大小
        background-size:width height;  px
            contain         以最小值为准
            cover           以最大值为准
    # 多个背景图
        background:url,url,url,url;

# 背景图生效位置
    background-origin:border-box;   边框生效位置
    background-origin:content-box;  内容生效位置
    background-origin:padding-box;  默认位置
# 文本开切位置
    -webkit-background-clip:text;
    color:rgba(0,0,0,0);    配合使用
# 倒影
    -webkit-box-reflect:below 10px -webkit-linear-gradient(rgba(0,0,0,0) 40%,rgba(0,0,0,1));
        below   向下
        above   向上
        left    向左
        right   向右

        10px    间距c

例子:
    <style>
        img {
            margin-left: 300px;
            -webkit-box-reflect: left 10px -webkit-linear-gradient(rgba(0, 0, 0, 0) 60%, rgba(0, 0, 0, 1));
        }
    </style>

    <body>
    ![](../img/2.jpg)
    </body>

# 滤镜
    -webkit-filter:blur(0px);

# 缩放大小
    resize:both;

# 缩放大小
    resize:both; overflow:hidden;

# 文本排序
    direction:rtl; unicode-bidi:bidi-override;

# 变形
    transform:
        rotate          旋转度数    deg
        translate(x,y)  平移像素    px
        scale(x,y)      缩放比例
        skew(x,y)       倾斜度数    deg
      变形样式是从后往前读
    transform:skew(30deg,10deg) scale(2,2) translate(100px,20px) rotate(45deg);

# 旋转控制中心点
    transform-origin:x y;
        left
        right
        top
        bottom
        20px 20px
例子:
   <style>
        div {
            width: 200px;
            height: 200px;
            background: red;
            float: left;
            margin: 10px;
            transition: .4s all ease;
        }

        div:nth-child(1) {
            transform-origin: left top;
        }

        div:nth-child(2) {
            transform-origin: right top;
        }

        div:nth-child(3) {
            transform-origin: right bottom;
        }

        div:nth-child(4) {
            transform-origin: left bottom;
        }

        div:nth-child(5) {
            transform-origin: 50px 0;
        }

        div:hover {
            transform: rotate(45deg);
        }
    </style>
    <script>

    </script>

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

钟表
#景深
    800-1200
    transform:perspective(800px);
    perspective:800px;
例子:
     <style>
            * {
                margin: 0;
                padding: 0;
            }

            div {
                width: 200px;
                height: 200px;
                background: red;
                margin: 100px auto;
                transition: 1s all ease;
            }

            div:active {
                transform: perspective(800px) rotateX(-60deg);
            }
     </style>

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

#3d     加给父级    不能继承
    transform-style:preserver-3d;

#变形
    transform:
        scale       X Y 
        rotate      X Y Z
        translate   X Y Z
        skew        X Y
例子:
     <style>
            body {
                overflow: hidden;
            }

            div {
                transform: skew(0deg, 0deg);
                transition: 1s all ease;
                width: 200px;
                height: 200px;
                background: red;
                margin: 200px auto;
            }

            div:hover {
                transform: skew(50deg, 50deg);
            }
        </style>

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


#判断运动结束
    transitionend
    obj.addEventListener('transitionend',fn,false);

3d作品展示

    <style>
        * {
            margin: 0;
            padding: 0;
            list-style: none;
        }

        ul {
            position: relative;
            margin: 100px auto;
            width: 300px;
            height: 300px;
            transform-style: preserve-3d;
            transform: perspective(800px);
        }

        li {
            position: absolute;
            left: 0;
            top: 0;
            width: 100%;
            height: 100%;
            background: #399;
            border: 1px solid red;
            text-align: center;
            line-height: 300px;
            font-size: 50px;
            font-weight: bold;
            color: #fff;
            opacity: 0;
            transition: 1s all ease;
        }

        .l2 {
            transform: translate(-260px, 0) rotateY(45deg);
        }

        .l1 {
            opacity: 1;
            transform: translate(-180px, 0) rotateY(45deg);
        }

        .cur {
            opacity: 1;
        }

        .r1 {
            opacity: 1;
            transform: translate(180px, 0) rotateY(-45deg);
        }

        .r2 {
            transform: translate(260px, 0) rotateY(-45deg);
        }
    </style>
    <script>
        window.onload = function () {
            var oPrev = document.querySelector('.prev');
            var oNext = document.querySelector('.next');
            var aLi = document.querySelectorAll('li');
            var aClass = [];
            var bOk = false;

            for (var i = 0; i < aLi.length; i++) {
                aClass.push(aLi[i].className);
            }

            oPrev.onclick = function () {
                if (bOk)return;
                bOk = true;
                aClass.push(aClass.shift());
                change();
            };
            oNext.onclick = function () {
                if (bOk)return;
                bOk = true;
                aClass.unshift(aClass.pop());
                change();
            };

            function change() {
                for (var i = 0; i < aLi.length; i++) {
                    aLi[i].className = aClass[i];
                }
                //判断运动结束
                var oCur = document.querySelector('.cur');

                function transEnd() {
                    oCur.removeEventListener('transitionend', transEnd, false);
                    bOk = false;
                }

                oCur.addEventListener('transitionend', transEnd, false);
            }
        };
    </script>           
    

    <body>
    <input type="button" value="←" class="prev"/>
    <input type="button" value="→" class="next"/>
    <ul>
        <li class="l2">0</li>
        <li class="l1">1</li>
        <li class="cur">2</li>
        <li class="r1">3</li>
        <li class="r2">4</li>
        <li>5</li>
        <li>6</li>
        <li>7</li>
        <li>8</li>
        <li>9</li>
        <li>10</li>
    </ul>
    </body>

3d 立方体

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

        .box {
            width: 300px;
            height: 300px;
            margin: 100px auto;
            position: relative;
            transform-style: preserve-3d;
            transform: perspective(800px);
            border-radius: 50%;
        }

        .box div {
            position: absolute;
            left: 0;
            top: 0;
            width: 100%;
            height: 100%;
            text-align: center;
            line-height: 300px;
            font-size: 50px;
            border-radius: 50%;
        }

        .front {
            background: rgba(204, 102, 51, 0.5);
            transform: translateZ(150px);
        }

        .back {
            background: rgba(204, 102, 153, 0.5);
            transform: translateZ(-150px) rotateY(180deg);
        }

        .left {
            background: rgba(255, 102, 102, 0.5);
            transform: translate(-150px, 0) rotateY(-90deg);
        }

        .right {
            background: rgba(51, 255, 204, 0.5);
            transform: translate(150px, 0) rotateY(90deg);
        }

        .top {
            background: rgba(204, 102, 204, 0.5);
            transform: translate(0, -150px) rotateX(90deg);
        }

        .bottom {
            background: rgba(51, 102, 204, 0.5);
            transform: translate(0, 150px) rotateX(-90deg);
        }
    </style>
    <script>
        window.onload = function () {
            var oBox = document.querySelector('.box');

            var x = 0;
            var y = 0;
            var iSpeedX = 0;
            var iSpeedY = 0;
            var lastX = 0;
            var lastY = 0;
            oBox.onmousedown = function (ev) {
                var disX = ev.clientX - x;
                var disY = ev.clientY - y;
                document.onmousemove = function (ev) {
                    x = ev.clientX - disX;
                    y = ev.clientY - disY;
                    oBox.style.transform = 'perspective(800px) rotateX(' + -(y) + 'deg) rotateY(' + (x) + 'deg)';
                    iSpeedX = ev.clientX - lastX;
                    iSpeedY = ev.clientY - lastY;

                    lastX = ev.clientX;
                    lastY = ev.clientY;
                };
                document.onmouseup = function () {
                    document.onmousemove = null;
                    document.onmouseup = null;

                    oBox.timer = setInterval(function () {
                        iSpeedX *= 0.8;
                        iSpeedY *= 0.8;

                        x += iSpeedX;
                        y += iSpeedY;
                        oBox.style.transform = 'perspective(800px) rotateX(' + -(y) + 'deg) rotateY(' + (x) + 'deg)';

                        if (Math.abs(iSpeedX) < 1)iSpeedX = 0;
                        if (Math.abs(iSpeedY) < 1)iSpeedY = 0;

                        if (iSpeedX == 0 && iSpeedY == 0) {
                            clearInterval(oBox.timer);
                        }
                    }, 16);
                };
                return false;
            };
        };
    </script>

    <body>
        <div class="box">
            <div class="front">前</div>
            <div class="back">后</div>
            <div class="left">左</div>
            <div class="right">右</div>
            <div class="top">上</div>
            <div class="bottom">下</div>
        </div>
    </body>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,290评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,399评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,021评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,034评论 0 207
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,412评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,651评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,902评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,605评论 0 199
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,339评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,586评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,076评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,400评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,060评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,083评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,851评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,685评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,595评论 2 270

推荐阅读更多精彩内容

  • 1、属性选择器:id选择器 # 通过id 来选择类名选择器 . 通过类名来选择属性选择器 ...
    Yuann阅读 1,524评论 0 7
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,630评论 1 92
  • CSS3简介 CSS3的现状 浏览器支持程度差,需要添加 私有前缀 ; 移动端支持优于PC端; 不断改进中; 应用...
    magic_pill阅读 732评论 0 1
  • 转载请声明 原文链接 关注公众号获取更多资讯 这篇文章主要总结H5的一些新增的功能以及一些基础归纳,这里只是一个提...
    程序员poetry阅读 9,015评论 22 225
  • 秋日 秋思不绝 秋日 瞌睡连连 秋日与众人互道 中秋快乐 秋日远游 与水翁言老 与沙粒,茫茫无尽的海水 互道早安 ...
    公子九月回阅读 183评论 0 1