【笔记】css3实现网页平滑过渡效果...

参考:http://www.imooc.com/video/7142

未完。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>css3 slide</title>
        <!--适应设备大小-->
        <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
        <!--适应低级浏览器-->
        <meta http-equiv="X-UA-Compatible" content="IE-edge,chrome=1">
        <!--导入css-->
        <link rel="stylesheet" type="text/css" href="css/normalize.css"/>
        <link rel="stylesheet" type="text/css" href="css/style.css"/>
    </head>
    <body>
        <div class="container">
            <div class="st-container">
                <!--nav begin 导航开始-->
                <input type="radio" name="radio-set" checked="checked" id="st-control-1"/>
                <a href="#st-panel-1">11111</a>
                <input type="radio" name="radio-set" checked="checked" id="st-control-2"/>
                <a href="#st-panel-2">2222222</a>
                <input type="radio" name="radio-set" checked="checked" id="st-control-3"/>
                <a href="#st-panel-3">3333333</a>
                <input type="radio" name="radio-set" checked="checked" id="st-control-4"/>
                <a href="#st-panel-4">44444</a>
                <input type="radio" name="radio-set" checked="checked" id="st-control-5"/>
                <a href="#st-panel-5">555</a>
                <!--nav end content begin -->
                 <div class="st-scroll">
                     <section class="st-panel" id="st-panel-1">
                         <p>222222222</p>
                     </section>
                     <section class="st-panel" id="st-panel-2">
                         <p>333333</p>
                     </section>
                     <section class="st-panel" id="st-panel-3">
                         <p>444444</p>
                     </section>
                     <section class="st-panel" id="st-panel-4">
                         <p>8888888</p>
                     </section>
                     <section class="st-panel" id="st-panel-5">
                         <p>777777</p>
                     </section>
                 </div>
            </div>
        </div>
    </body>
</html>
body {
    font-family: georgia,serif;
    background: #ddd;
    font-weight: 400;
    font-size: 15px;
    color: #333;
    /*溢出隐藏*/
    overflow: hidden;
    /*字体更圆滑,一般用在英文字体上*/
    -webkit-font-smoothing: antialiased;
}

/*链接样式*/
a {
    text-decoration: none; /*取消下划线*/
    color: #555;
    
}

/*定义一个清除浮动的类??*/
.clr {
    width: 0;
    height: 0;
    
    overflow: hidden;
    clear: both;
    padding: 0;
    margin: 0;
}

.st-container {
    width: 100%;
    height: 100%;
    
    position: absolute;
    left: 0;
    top: 0;
    
}

/*共同样式*/
.st-container > input,
.st-container > a {
    width: 20%;
    height: 34px;
    
    line-height: 34px;
    
    /*永远固定在最底部*/
    position: fixed;
    bottom: 0;
}

.st-container > input {
    /*把一个元素隐藏掉,消失掉*/
    /*display: none;*/
    /*占位隐藏*/
    opacity: 0.1; 
    z-index: 1000;
}

.st-container > a {
    z-index: 10;
    font-weight: 700;
    font-size: 16px;
    text-align: center;
    background: #e23a6e;
    color: white;
    box-shadow: 1px 1px 1px rgba(151, 24, 64, 0.2);
}

#st-control-1, #st-control-1 + a {
    left: 0%;
}

#st-control-2, #st-control-2 + a {
    left: 20%;
}

#st-control-3, #st-control-3 + a {
    left: 40%;
}

#st-control-4, #st-control-4 + a {
    left: 60%;
}

#st-control-5, #st-control-5 + a {
    left: 80%;
}

/*选中被选中的input的后面的那个a*/
.st-container input:checked + a {
    background: #821134;
}

/*动态生成三角形*/
.st-container input:checked + a:after {
    content: "";
    width: 0;
    height: 0;
    overflow: hidden;
    border: 20px solid transparent;
    border-bottom-color: #821134;
    
    position: absolute;
    bottom: 100%;
    left: 50%;
    margin-left: -20px;
}

/*鼠标划过*/
.st-container input:hover + a {
    background: #AD244F;
}

.st-container input:checked:hover + a {
    background: #821134;
}

/*内容*/
.st-scroll,
.st-panel {
    width: 100%;
    height: 100%;
    /*relative?????????取消上面的overflow hidden就会显示出 顺序下来的5个*/
    position: relative;
}

.st-scroll {
    left: 0;
    top: 0;
    /*3d可以加速*/
    -webkit-transform: translate3d(0, 0, 0);
}

 2、参考:http://iwenku.net/?article_167.html

body {
                scroll-behavior: smooth;
            }
            .catalog {
                position: fixed;
                top: 27%;
                left: 82%;
                z-index: 11;

                box-shadow:0 0px 0px rgba(0,0,0,0.5);
                border-radius: 10%;

                padding: 10px;
                
                transform: rotate(0deg);
                transition: 0.5s ease-in-out;
            }
            
            .catalog:hover {
                box-shadow:0 10px 20px rgba(0,0,0,0.5);
                
                transform: rotate(0deg);
                transition: 0.6s ease-in-out;
            }

scroll-behavior只有少数浏览器支持,

顺便记一下自己写的一个索引样式。。。

js权限没申请成功,css弄了半天也没实现,心累,就这样吧。。。

update:

申请成功了...

j继续弄,参考:https://blog.brain1981.com/410.html

update:

博客園代碼:截取其中的script和css即可。分别是箭头(copy自上面的url)和代码浮动(diy):

<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            .cnblogs_code {
                z-index: 11;
                box-shadow: 0 0px 0px rgba(0, 0, 0, 0.5);
                border-radius: 2%;
                padding: 10px;
                transform: rotate(0deg);
                transition: 0.5s ease-in-out;
                overflow: hidden;
            }
            
            .cnblogs_code:hover {
                box-shadow: 0 10px 20px rgba(0, 0, 0, 0.5);
                transform: rotate(0deg);
                transition: 0.6s ease-in-out;
            }
            
            #returnTop {
                background-color: #333;
                width: 40px;
                height: 40px;
                display: block;
                position: fixed;
                line-height: 50px;
                color: #fff;
                right: 30px;
                bottom: 30px;
            }
            
            #returnTop_a {
                position: absolute;
                top: -2px;
                left: 8px;
                width: 0;
                height: 0;
                border-width: 10px 12px;
                border-style: dashed dashed solid;
                border-color: rgba(0, 0, 0, 0) rgba(0, 0, 0, 0) #FFF;
            }
            
            #returnTop_b {
                position: absolute;
                top: 18px;
                left: 14px;
                width: 12px;
                height: 12px;
                background: #FFF;
            }
        </style>
    </head>

    <body>
        <a id="returnTop" href="###" onclick="scrollPosition()">
            <!--scrollPosition就是跳转调用的函数-->
            <span id="returnTop_a"></span>
            <span id="returnTop_b"></span>
        </a>

        <script type="text/javascript">
            function getScrollOffsets(_w) { //获取页面的滚动位置
                _w = _w || window;
                //for all and IE9+
                if(_w.pageXOffset != null) return {
                    x: _w.pageXOffset,
                    y: _w.pageYOffset
                };
                //for IE678
                var _d = _w.document;
                if(document.compatMode == "CSS1Compat") return { //for IE678
                    x: _d.documentElement.scrollLeft,
                    y: _d.documentElement.scrollTop
                };
                //for other mode
                return {
                    x: _d.body.scrollLeft,
                    y: _d.body.scrpllTop
                };
            }

            function getViewPortSize(_w) { //获取页面的窗口大小
                _w = _w || window;
                //for all and IE9+
                if(_w.innerWidth != null) return {
                    x: _w.innerWidth,
                    y: _w.innerHeight
                };
                //for IE678
                var _d = _w.document;
                if(document.compatMode == "CSS1Compat") return { //for IE678
                    x: _d.documentElement.clientWidth,
                    y: _d.documentElement.clientHeight
                };
                //for other mode
                return {
                    x: _d.body.clientWidth,
                    y: _d.body.clientHeight
                };
            }

            function scrollPosition(_obj) { //参数_obj可以是任何页面上存在的元素的id,或者是指定元素本身
                var targetX, targetY;
                if(!_obj) { //如果不指定锚点元素,就跳到页面顶端0,0位置
                    targetX = 0;
                    targetY = 0;
                } else {
                    if(typeof(_obj) == "string") {
                        _obj = document.getElementById(_obj);
                    } else {
                        _obj = _obj
                    }
                    targetX = _obj.getBoundingClientRect().left + getScrollOffsets().x;
                    targetY = _obj.getBoundingClientRect().top + getScrollOffsets().y;
                }

                //如果目标元素的位置在最后一屏,那就指定目标位置为页面底部
                //如果目标元素的位置为负数,就指定目标位置为页面顶部
                var maxTargetX = document.body.scrollWidth - getViewPortSize().x;
                if(targetX >= maxTargetX) targetX = maxTargetX;
                if(targetX < 0) targetX = 0;
                var maxTargetY = document.body.scrollHeight - getViewPortSize().y;
                if(targetY >= maxTargetY) targetY = maxTargetY;
                if(targetY < 0) targetY = 0;

                var tempTimer = setInterval(function() {
                    var currentY = getScrollOffsets().y;
                    var currentX = getScrollOffsets().x;
                    //跳转位置的缓冲公式
                    var tempTargetY = currentY - (currentY - targetY) / 10;
                    var tempTargetX = currentX - (currentX - targetX) / 10;
                    //由于缓冲公式会生成小数,而scrollTo函数会省略小数点后面的数字,所以要对跳转的坐标做一些微调
                    if(Math.abs(tempTargetY - currentY) < 1) {
                        tempTargetY - currentY > 0 ? tempTargetY++ : tempTargetY--;
                    }
                    if(Math.abs(tempTargetX - currentX) < 1) {
                        tempTargetX - currentX > 0 ? tempTargetX++ : tempTargetX--;
                    }
                    //页面跳转
                    window.scrollTo(tempTargetX, tempTargetY);
                    //到达指定位置后清除一下Interval
                    if(Math.abs(getScrollOffsets().y - targetY) <= 2 && Math.abs(getScrollOffsets().x - targetX) <= 2) {
                        clearInterval(tempTimer);
                        window.scrollTo(targetX, targetY);
                        //console.log("done");
                    }
                }, 10);
            }
        </script>
    </body>

</html>

 

转载于:https://www.cnblogs.com/xkxf/p/6814375.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
@font-face{ font-family:"Raphaelicons"; src:url('fonts/raphaelicons-webfont.eot'); src:url('fonts/raphaelicons-webfont.eot?#iefix') format('embedded-opentype'), url('fonts/raphaelicons-webfont.ttf') format('truetype'), url('fonts/raphaelicons-webfont.woff') format('woff'), url('fonts/raphaelicons-webfont.svg') format('svg'); font-weight: normal; font-style: normal; } html,body,.container,.st-container{ height: 100%; } body{ font-family:Arial,Georgia,serif; background-color: #ddd; font-weight: bold; font-size: 15px; color: #333; overflow: hidden; -webkit-font-smoothing:antialiased; } a{ text-decoration: none; color: #555; } .clr{ width: 0; height: 0; overflow: hidden; clear: both; padding:0; margin:0; } .st-container{ width: 100%; height: 100%; position: absolute;; top:0; left:0; font-family: Arial,"Josefin Slab","Myriad Pro",sans-serif; } .st-container > input,.st-container > a{ width: 20%; height: 40px; line-height: 40px; position:fixed; bottom:0; cursor: pointer; } .st-container > input{ opacity:0; z-index: 1000; } .st-container > a{ z-index: 10; font-weight: 700; font-size: 16px; background-color: #e23a6e; color: #fff; text-align: center; text-shadow:1px 1px 1px rgba(151,24,64,0.2); -webkit-transition:all 0.5s; -moz-transition:all 0.5s; transition:all 0.5s; } #st-control-1,#st-control-1 + a{ left:0%; } #st-control-2,#st-control-2 + a{ left:20%; } #st-control-3,#st-control-3 + a{ left:40%; } #st-control-4,#st-control-4 + a{ left:60%; } #st-control-5,#st-control-5 + a{ left:80%; } .st-container input:checked + a,.st-container input:checked:hover + a{ background-color: #821134; } .st-container input:checked + a:after{ content: ''; width: 0; height: 0; overflow: hidden; border:20px solid transparent; border-bottom-color:#821134; position: absolute; bottom:100%; left:50%; /*transform:translateX(-50%);*/ margin-left: -20px; } .st-container input:hover + a{ background-color: #ad244f; } /*内容区域*/ .st-scroll, .st-scroll .st-panel{ height: 100%; width: 100%; position: relative; } .st-scroll{ left:0; top:0; -webkit-transform:translate3d(0,0,0); -moz-transform:translate3d(0,0,0); transform:translate3d(0,0,0); -webkit-backface-visibility:hidden; -webkit-transition:all 0.6s ease-in-out; -moz-transition:all 0.6s ease-in-out; transition:all 0.6s ease-in-out; } .st-panel{ background-color: #fff; overflow: hidden; } .st-color{ background-color: #fa96b5; color: #fff; } #st-control-1:checked ~ .st-scroll{ -webkit-transform:translateY(0%); -moz-transform:translateY(0%); transform:translateY(0%); } #st-control-2:checked ~ .st-scroll{ -webkit-transform:translateY(-100%); -moz-transform:translateY(-100%); transform:translateY(-100%); } #st-control-3:checked ~ .st-scroll{ -webkit-transform:translateY(-200%); -moz-transform:translateY(-200%); transform:translateY(-200%); } #st-control-4:checked ~ .st-scroll{ -webkit-transform:translateY(-300%); -moz-transform:translateY(-300%); transform:translateY(-300%); } #st-control-5:checked ~ .st-scroll{ -webkit-transform:translateY(-400%); -moz-transform:translateY(-400%); transform:translateY(-400%); } .st-desc{ width: 200px; height: 200px; background-color: #fa96b5; position: absolute; left:50%; top:0; margin-left: -100px; -webkit-transform:translateY(-50%) rotate(45deg); -moz-transform:translateY(-50%) rotate(45deg); transform:translateY(-50%) rotate(45deg); } .st-color .st-desc{ background-color: #fff; } [data-icon]:after{ content: attr(data-icon); width: 200px; height: 200px; color: #fff; font-size: 90px; text-align: center; line-height: 200px; position: absolute; left: 50%; top:50%; margin: -100px 0 0 -100px; -webkit-transform:rotate(-45deg) translateY(25%); -moz-transform:rotate(-45deg) translateY(25%); transform:rotate(-45deg) translateY(25%); font-family:"Raphaelicons"; text-shadow:1px 1px 1px rgba(151,24,64,0.2); } .st-color [data-icon]:after{ color: #fa96b5; text-shadow:1px 1px 1px rgba(0,0,0,0.1); } .st-panel h2{ color: #e23a6e; font-size: 54px; line-height: 50px; text-align: center; font-weight: 900; width: 80%; position: absolute; left:10%; top:150px; text-shadow: 1px 1px 1px rgba(151,24,64,0.2); -webkit-backface-visibility:hidden; } .st-color h2{ color: #fff; text-shadow:1px 1px 1px rgba(0,0,0,0.1); } #st-control-1:checked ~ .st-scroll #st-panel-1 h2, #st-control-2:checked ~ .st-scroll #st-panel-2 h2, #st-control-3:checked ~ .st-scroll #st-panel-3 h2, #st-control-4:checked ~ .st-scroll #st-panel-4 h2, #st-control-5:checked ~ .st-scroll #st-panel-5 h2{ -webkit-animation:moveDown 0.6s ease-in-out 0.2s backwards; -moz-animation:moveDown 0.6s ease-in-out 0.2s backwards; -o-animation:moveDown 0.6s ease-in-out 0.2s backwards; -ms-animation:moveDown 0.6s ease-in-out 0.2s backwards; animation:moveDown 0.6s ease-in-out 0.2s backwards; } @-webkit-keyframes moveDown{ 0%{ -webkit-transform:translateY(-40px); opacity:0; } 100%{ -webkit-transform:translateY(0px); opacity:1; } } @-moz-keyframes moveDown{ 0%{ -moz-transform:translateY(-40px); opacity:0; } 100%{ -moz-transform:translateY(0px); opacity:1; } } @-o-keyframes moveDown{ 0%{ -o-transform:translateY(-40px); opacity:0; } 100%{ -o-transform:translateY(0px); opacity:1; } } @-ms-keyframes moveDown{ 0%{ -ms-transform:translateY(-40px); opacity:0; } 100%{ -ms-transform:translateY(0px); opacity:1; } } @keyframes moveDown{ 0%{ transform:translateY(-40px); opacity:0; } 100%{ transform:translateY(0px); opacity:1; } } .st-panel p{ font-size: 25px; color: #8b8b8b; line-height: 1.8; text-align: left; text-indent: 2em; font-weight: 700; width: 70%; position: absolute; left:15%; top:280px; text-shadow: 1px 1px 1px rgba(151,24,64,0.2); -webkit-backface-visibility:hidden; } .st-color p{ color:rgba(255,255,255,0.8); text-shadow:1px 1px 1px rgba(0,0,0,0.1); } #st-control-1:checked ~ .st-scroll #st-panel-1 p, #st-control-2:checked ~ .st-scroll #st-panel-2 p, #st-control-3:checked ~ .st-scroll #st-panel-3 p, #st-control-4:checked ~ .st-scroll #st-panel-4 p, #st-control-5:checked ~ .st-scroll #st-panel-5 p{ -webkit-animation:moveUp 0.6s ease-in-out 0.2s backwards; -moz-animation:moveUp 0.6s ease-in-out 0.2s backwards; -o-animation:moveUp 0.6s ease-in-out 0.2s backwards; -ms-animation:moveUp 0.6s ease-in-out 0.2s backwards; animation:moveUp 0.6s ease-in-out 0.2s backwards; } @-webkit-keyframes moveUp{ 0%{ -webkit-transform:translateY(40px); opacity:0; } 100%{ -webkit-transform:translateY(0px); opacity:1; } } @-moz-keyframes moveUp{ 0%{ -moz-transform:translateY(40px); opacity:0; } 100%{ -moz-transform:translateY(0px); opacity:1; } } @-o-keyframes moveUp{ 0%{ -o-transform:translateY(40px); opacity:0; } 100%{ -o-transform:translateY(0px); opacity:1; } } @-ms-keyframes moveUp{ 0%{ -ms-transform:translateY(40px); opacity:0; } 100%{ -ms-transform:translateY(0px); opacity:1; } } @keyframes moveUp{ 0%{ transform:translateY(40px); opacity:0; } 100%{ transform:translateY(0px); opacity:1; } } @media screen and (max-width:520px){ .st-panel h2{ font-size: 42px; } .st-panel p{ font-size: 18px; width: 90%; left:5%; top:240px; } .st-container > a{ font-size: 13px; } .st-desc{ width: 160px; height:160px; margin-left: -80px; } [data-icon]:after{ font-size: 75px; -webkit-transform:rotate(-45deg) translateY(20%); -moz-transform:rotate(-45deg) translateY(20%); transform:rotate(-45deg) translateY(20%); } } @media screen and (max-width:360px){ .st-panel h2{ font-size: 42px; } .st-panel p{ font-size: 18px; width: 90%; left:5%; top:240px; } .st-container > a{ font-size: 10px; } .st-desc{ width: 120px; height:120px; margin-left: -60px; } [data-icon]:after{ font-size: 60px; -webkit-transform:rotate(-45deg) translateY(15%); -moz-transform:rotate(-45deg) translateY(15%); transform:rotate(-45deg) translateY(15%); } }

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值