• 仿慕课网轮播图


    慕课网的轮播图挺好看的

    火狐拿图片真的方便

    整个区域大小

    设置大致轮廓

    为什么会这样呢。因为左侧div沾满了一行了,下一个div肯定换行

    既然父元素制定了高度了,子元素全部浮动即可

    浮动了还是不行

    果然是父元素容不下了

    现在好了

    大致轮廓出来了

    再把图片放上去

    经典的轮播实现方式!

    一个div,放多张图片。

    第一张,是在合适的位置的。

    第二张开始就在下一行了,因为位置被占。

    只要在js里面定时,轮流将他们设置block 和 none即可

    这里设置第二张显示

     

    快凌晨1点了。休息了

    本来在轮播和小点那里还有不少内容的。。。但是网崩了,提交之后什么都没有了。。。

    直接上源码好了

    OK了

    再加上切换图片逻辑,并且轮播的时候应该自动切换小点,完事了

    html

                    <div class="box-content">
                        
                        <!-- 图片区 -->
                        <div id="banner-img">
                            <a href=""><img src="1.jpg" style="display: block;"></a>
                            <a href=""><img src="2.jpg" style="display: none;"></a>
                            <a href=""><img src="3.jpg" style="display: none;"></a>
                        </div>
    
                        <!-- 小点区 -->
                        <div id="dots">
                            <span class="dot-active"></span>
                            <span class="dot-native"></span>
                            <span class="dot-native"></span>
                        </div>
    
                    </div>

    CSS

    .box-content{
        height: 444px;
        width: 936px;
        border: 1px solid gray;
        float: left;
        position: relative;
    }
    
    #banner-img{
        width: 936px;
        height: 316px;
    }
    
    #banner-img a img{
        width: 936px;
        height: 316px;
    }
    
    #dots{
        position: absolute;
        right: 30px;
        top: 275px;
    }
    
    .dot-active{
        display: inline-block;
        height: 10px;
        width: 10px;
        border-radius: 50%;
        background-color: #fff;
        border: 2px solid rgba(7,17,27,.4);
    }
    
    .dot-native{
        display: inline-block;
        height: 10px;
        width: 10px;
        border-radius: 50%;
        background-color: rgba(7,17,27,.8);
        border: 2px solid rgba(255,255,255,.6);
    }

    JS

    // 拿父控件
    const banner = document.getElementById('banner-img');
    // 通过父控件找下面的元素
    const imgs = banner.getElementsByTagName('img');
    
    console.log(imgs);
    
    //全局变量,用于记录当前页面的值
    var current = 0;
    
    function changeImg(){
    
        console.log(current);
    
        // 将除了自己以外的全部设为none
        //此时current应该是none的
        for(let i=0;i<3;i++){
            if (i!=current) {
                imgs[i].style.display="none";
            }
        }
        
        //全部消除了之后再设置
        imgs[current].style.display="block"
    }
    
    //存放interval的id
    var result ;
    
    console.log('hello');
    
    // 添加hover事件,取消轮播
    banner.addEventListener('mouseover',()=>{
        console.log('mouseover');
        clearInterval(result);
    },true);
    
    banner.addEventListener('mouseout',()=>{
    
        //定时轮播
        result= setInterval(()=>{
    
            // 超过2之后要从头开始
            if (current==3) {
                current=0;
            }
    
            //console.log(current);
    
            changeImg();
            changeDot(current);
    
            current++;
        
        },1000);
    
    },true);
    
    
    var dots = document.getElementById('dots').getElementsByTagName('span');
    
    function changeDot(index){
    
        // 先取消全部
            for(let j=0;j<3;j++){
                dots[j].className = 'dot-native';
            }
    
            dots[index].className = 'dot-active';
    }
    
    for(let i=0;i<3;i++){
    
        let temp = dots[i];
    
        // 每个按钮的操作
        temp.addEventListener('click',()=>{
    
            changeDot(i);
            //切换图片
            current=i;
            changeImg();
        });
    
    }
    
    
    //定时轮播
    result= setInterval(()=>{
    
        // 超过2之后要从头开始
        if (current==3) {
            current=0;
        }
    
        //console.log(current);
    
        changeImg();
        changeDot(current);
    
        current++;
        
    },1000);

    实现一下下面的区域

    一个a标签

    图片居中,文字居中,hover的时候,图片和文字整体上移。有意思

    先把内容放上去

    奇怪

    官网的图片是这样的

    怎样把它切成5分用作不同的背景图呀?

    感觉玄机在这里

    第一张    【0】

    第二张 【2】

    三 【3】

    四 【1】 用的是第一张图

    五 【4】

    可以看到序列是

     0 -36 -72 -108 -144

    就每次偏移36px

    看看这个属性是怎样定位的

    其实就是固定好x值  center 图片中心

    然后通过y值的偏移去选图片

    自己实现一下

    不能直接指定src,会导致背景超大

    所以不用img,要用i标签

    好像不行

    要加上一个size

    这个可以规定背景图的尺寸

    很迷,只能在上面的选择器使用size,放到下面就无效了

    而且图片的position也没起到效果 

    类排在后面。且无效,可能是前面的冲突了,直接加import试试! 

    OK

    应该是上面选择器优先级高,所以导致后面没效果

    完事!

    绝对定位会导致元素脱离文档流

    不要用这种方法

    还有没有方法让元素居中呢?

    有,将元素设为inline-block,父元素text-alingn center即可

    完事

    text-aling center 和 inline-block 很好用!

    提高文字和图片的方法就是,将a这一块,相对定位,把自己提高即可。

    调pading和margin很容易产生布局问题!

    完事!

    发现了这个问题

    直接层级999即可

    OK

    现在整个网站是这样子了

    把这个弄好就完事了!

    一个item是一个div,里面有个a

    好了

    接下来添加hover

    hover是这样的,里面的元素左边框要圆角

    完事了!

    最后给整个大框设置圆角和阴影

    可见,因为子元素的原因,父元素设置圆角看不见

    只能分别给子元素加咯

    光给元素还不行,图片也会吐出来

    父子必须同时圆角

    ok完事了

    总的html   216行

    <!DOCTYPE html>
    <html>
    <head>
        <title></title>
        <link rel="stylesheet" type="text/css" href="./style.css">
        <meta charset="utf-8">
    </head>
    <body>
    
        <div id="header">
    
            <!-- 这个把里面元素包起来,整体padding一定的距离 -->
            <div id="nav">
                
                <!-- 图标 -->
                <div id="logo">
                    <a href="#">
                        <img src="./logo.png" title="慕课网">    
                    </a>
                </div>
                <!-- 导航栏 -->
                <!-- 其实div也可以,不过用li看起来意义更明确一点吧 -->
                <ul id="nav-item">
                    <li><a href="#" class="a104">免费课程</a></li>
                    <li><a href="#" class="a104">职业路径</a></li>
                    <li><a href="#" class="a72">实战</a></li>
                    <li><a href="#" class="a72">猿问</a></li>
                    <li><a href="#" class="a72">手记</a></li>
                    <li><a href="#" class="a94">找工作
                        <i class="icn-new"></i>
                        </a>
                    </li>
                </ul>
                <!-- 搜索栏 -->
                <div id="search">
                    <input type="text" class="search-input" placeholder="Java/Python/JavaScript">
                    <button class="search-button">搜索</button>
                </div>
                <!-- 购物车、消息、头像 -->
                <div id="login-area">
    
                    <!-- 下载APP -->
                    <div class="app-load">
                        <a href="#" class="app-load-tag">下载APP</a>
                        <div class="app-load-box">
                            <div class="app-load-box-container">
                                <img src="appload.png">
                                <div class="app-load-box-container-right">
                                    <p>扫描下载慕课网APP</p>
                                    <a href="#" class="load-icon">App Store下载</a>
                                    <a href="#" class="load-icon">Android下载</a>
                                </div>
                            </div>
                            
                        </div>
                    </div>
    
                    <!-- 购物车 -->
                    <div class="shop-cart">
                        <a href="#">购物车</a>
                    </div>
    
                    <div class="user-card">
                        <div class="user-card-item">
                            <div class="user-img">
                                <a href="#" ><img src="user.jpg"></a>
                            </div>
                            <div class="user-info">
                                <img src="user.jpg" class="info-img">
                                <div class="info-desc">
                                    <p class="info-desc-name">VZBlank</p>
                                    <p class="info-desc-work">前端工程师</p>
                                </div>
                            </div>
                        </div> 
                        
                    </div>
    
    
                </div>
    
            </div>
            
        </div>
    
    
        <div id="container">
            
            <div class="banner">
    
                <div class="box">
    
                    <div class="menu-wrap">
                        
                        <div class="menuContent">
    
                            <div class="item">
    
                                <a href="#">
                                    <span class="group">前沿 / 区块链 / 人工智能</span>
                                </a>
                                
                            </div>
    
                            <div class="item">
    
                                <a href="#">
                                    <span class="group">前端 / 小程序 / JS</span>
                                </a>
                                
                            </div>
    
                            <div class="item">
    
                                <a href="#">
                                    <span class="group">后端 / JAVA / Python</span>
                                </a>
                                
                            </div>
    
                            <div class="item">
    
                                <a href="#">
                                    <span class="group">移动 / Android / iOS</span>
                                </a>
                                
                            </div>
    
                            <div class="item">
    
                                <a href="#">
                                    <span class="group">云计算 / 大数据 / 容器</span>
                                </a>
                                
                            </div>
    
                            <div class="item">
    
                                <a href="#">
                                    <span class="group">运维 / 测试 / 数据库</span>
                                </a>
                                
                            </div>
    
                            <div class="item">
    
                                <a href="#">
                                    <span class="group">UI设计 / 3D动画 / 游戏</span>
                                </a>
                                
                            </div>
                            
                        </div>
    
                    </div>
                    <div class="box-content">
                        
                        <!-- 图片区 -->
                        <div id="banner-img">
                            <a href=""><img src="1.jpg" style="display: block;"></a>
                            <a href=""><img src="2.jpg" style="display: none;"></a>
                            <a href=""><img src="3.jpg" style="display: none;"></a>
                        </div>
    
                        <!-- 小点区 -->
                        <div id="dots">
                            <span class="dot-active"></span>
                            <span class="dot-native"></span>
                            <span class="dot-native"></span>
                        </div>
    
                        <div id="path-banner">
    
                            <a href="#">
                                <i class="i-web"></i>
                                <p class="p1">Web前端攻城狮</p>
                                <p class="p2">互联网时代最火爆的技术</p>
                            </a>
    
                            <a href="#">
                                <i class="i-java"></i>
                                <p class="p1">Java攻城狮</p>
                                <p class="p2">综合就业排名第一</p>
                            </a>
    
                            <a href="#">
                                <i class="i-android"></i>
                                <p class="p1">Android攻城狮</p>
                                <p class="p2">移动设备市场份额第一</p>
                            </a>
    
                            <a href="#">
                                <i class="i-php"></i>
                                <p class="p1">PHP攻城狮</p>
                                <p class="p2">世界上最好的语言:)</p>
                            </a>
    
                            <a href="#"> 
                                <i class="i-ios"></i>
                                <p class="p1">iOS攻城狮</p>
                                <p class="p2">可能是全球最好用的系统</p>
                            </a>
                            
                        </div>
    
                    </div>
                    
                </div>
                
            </div>
    
        </div>
    
    <script type="text/javascript" src="js.js"></script>
    </body>
    </html>

    CSS  509行

    *{
        margin: 0;
        padding: 0;
    }
    
    body{
        /*直接不支持缩放*/
        min-width: 1536px;
        background-color: #f8fafc!important;
        font: 14px/1.5 "PingFang SC","微软雅黑","Microsoft YaHei",Helvetica,"Helvetica Neue",Tahoma,Arial,sans-serif;
    }
    
    #header{
        height: 72px;
        background: #fff;
        box-shadow: 0px 6px 20px 0px #88888899;
    }
    
    #nav{
        padding-left: 20px;
        padding-right: 10px;
    }
    
    #logo{
        height: 72px;
        margin-right: 20px;
        float: left;
    }
    
    #logo a{
        width: 140px;
        height: 72px;
        display: block;
    }
    
    #logo a img{
        width: 180px;
        height: 72px;
    }
    
    #nav-item{
        float: left;
        /*去掉小圆点*/
        list-style: none;
    }
    
    #nav-item li{
        font-size: 16px;
        /*垂直居中*/
        line-height: 72px;
        font-weight: 400;
        float: left;
    }
    
    #nav-item li a:hover{
        color: red;
    }
    
    .a104{
    
        color: #1c1f21;
        /*去掉下划线*/
        text-decoration:none;
        /*为了设置宽高,必须block*/
        display: block;
        width: 104px;
        height: 72px;
    /*    padding-left: 15px;
        padding-right: 15px;*/
        text-align: center;
    }
    
    .a72{
        color: #1c1f21;
        /*去掉下划线*/
        text-decoration:none;
        /*为了设置宽高,必须block*/
        display: block;
        width: 72px;
        height: 72px;
        text-align: center;
    }
    
    .a94{
        color: #1c1f21;
        /*去掉下划线*/
        text-decoration:none;
        /*为了设置宽高,必须block*/
        display: block;
        width: 64px;
        height: 72px;
        padding-left: 20px;
        padding-right: 10px;
        position: relative;
    }
    
    .icn-new{
        width: 16px;
        height: 16px;
        display: block;
        background: url(new.png);
        position: absolute;
        right: 10px;
        top: 17px;
    }
    
    #search{
        float: left;
        margin-top: 12px;
        margin-left: 24px;
        height: 48px;
        width: 300px;
        border-bottom: 1px solid #71777dc9;
    }
    
    .search-input{
        border:0;
        outline: 0;
        line-height: 46px;
        /*框内字体*/
        font-size: 12px;
        position: relative;
        top: 1.5px;
        float: left;
        width: 260px;
    }
    
    .search-button{
        width: 36px;
        height: 24px;
        border-radius: 12px;
        background-color: #ff8a22;
        border: 0;
        outline: 0;
        position: relative;
        top: 12px;
        left: 2px;
        float: left;
    }
    
    .search-button:hover{
        background-color: #93999f;
    }
    
    #login-area{
        width: 343.333px;
        height: 72px;
        /*border: 1px solid gray;*/
        float: right;
    }
    
    .app-load{
        width: 90px;
        height: 72px;
        /*限制子元素绝对定位*/
        position: relative;
        float: left;
    }
    
    .app-load-tag{
        display: block;
        width: 60px;
        height: 72px;
        line-height: 72px;
        padding-left: 15px;
        padding-right: 15px;
        text-decoration: none;
        color: #787d82;
    }
    
    .app-load-tag:hover{
        color: red;
    }
    
    .app-load:hover .app-load-box{
        display: block;
    }
    
    .app-load-box{
        display: none;
        width: 304px;
        height: 152px;
        border: 1px solid gray;
        border-radius: 10px;
        background-color: #fff;
        position: absolute;
        right: 0;
        font-size: 12px;
        color: #4D555D;
        z-index: 999;
    }
    
    .app-load-box-container{
        width: 256px;
        height: 108px;
        padding-left: 24px;
        padding-right: 24px;
        padding-top: 22px;
        padding-bottom: 22px;
    }
    
    .app-load-box img{
        width: 108px;
        height: 108px;
    }
    
    .app-load-box-container-right{
        width: 132px;
        height: 108px;
        float: right;
    }
    
    .app-load-box-container-right p{
        margin-bottom: 12px;
    }
    
    .load-icon{
        text-align: center;
        display: block;
        color: #fff;
        width: 132px;
        height: 36px;
        margin-top: 8px;
        line-height: 36px;
        background-color: #4D555D;
        border-radius: 18px;
        text-decoration: none;
    }
    
    .shop-cart{
        display: block;
        height: 36px;
        width: 133.333px;
        margin-bottom: 18px;
        margin-top: 18px;
        border: 1px solid gray;
        float: left;
        border-radius: 20px;
    }
    
    .shop-cart a{
        display: block;
        width: 95.733px;
        height: 34.4px;
        padding-left: 19px;
        padding-right: 19px;
        text-decoration: none;
        text-align: center;
        line-height: 34.4px;
        color: #787d82;
    }
    
    .shop-cart:hover{
        border: 3px solid red;
    }
    
    .shop-cart a:hover{
        color: red;
    }
    
    .user-card{
        width: 60px;
        height: 72px;
        float: left;
        /*border: 1px solid gray;*/
        margin-left: 15px;
    }
    
    .user-card:hover .user-img{
        border: 3px solid red;
        width: 50px;
        height: 50px;
        margin-top: 10px;
    }
    
    .user-card:hover .user-img img{
        width: 50px;
        height: 50px;
    }
    
    .user-card:hover .user-info{
        display: block;
    }
    
    
    .user-img{
        width: 32px;
        height: 32px;
        margin-left: 12px;
        margin-top: 14px;
        margin-bottom: 7px;
        border: 3px solid gray;
        border-radius: 50%;
    }
    
    .user-img img{
        width: 32px;
        height: 32px;
        border-radius: 50%;
    }
    
    
    .user-info{
        display: none;
        width: 120px;
        height: 160px;
        border: 2px solid red;
        background-color: #fff;
        border-radius: 20px;
        float: right;
    
    }
    
    .info-img{
        margin-top: 4px;
        margin-left: 8px;
        height: 100px;
        width: 100px;
        border-radius: 50px;
        border: 2px solid #ff2180;
    }
    
    .info-desc{
        text-align: center;
    }
    
    .info-desc-name{
        font-weight: 1000;
    }
    
    .info-desc-work{
        color: #787d82;
    }
    
    .banner{
        width: 1519.2px;
        height: 476px;
        margin-top: 32px;
        border-radius: 1px;
        /*border: 1px solid gray;*/
    }
    
    .box{
        width: 1152px;
        height: 444px;
        margin: auto auto;
        border-radius: 10px;
        /*/border: 1px solid gray;*/
        box-shadow: 0px 5px 20px 0px #93999F;
    }
    
    .menu-wrap{
        height: 444px;
        width: 216px;
        /*border: 1px solid gray;*/
        float: left;
        border-top-left-radius: 10px;
        border-bottom-left-radius: 10px;
    }
    
    .box-content{
        height: 444px;
        width: 936px;
        /*border: 1px solid gray;*/
        float: left;
        position: relative;
        border-top-right-radius: 10px;
        border-bottom-right-radius: 10px;
    }
    
    #banner-img{
        width: 936px;
        height: 316px;
    }
    
    #banner-img a img{
        width: 936px;
        height: 316px;
        border-top-right-radius: 10px;
    }
    
    #dots{
        position: absolute;
        right: 30px;
        top: 275px;
    }
    
    .dot-active{
        display: inline-block;
        height: 10px;
        width: 10px;
        border-radius: 50%;
        background-color: #fff;
        border: 2px solid rgba(7,17,27,.4);
    }
    
    .dot-native{
        display: inline-block;
        height: 10px;
        width: 10px;
        border-radius: 50%;
        background-color: rgba(7,17,27,.8);
        border: 2px solid rgba(255,255,255,.6);
    }
    
    #path-banner{
        width: 936px;
        height: 128px;
        margin: 0 auto;
        text-align: center;
    }
    
    #path-banner a{
        display: inline-block;
        height: 128px;
        width: 180px;
        text-align: center;
        text-decoration: none; 
        /*background-color: #fff;*/
    }
    
    #path-banner a:hover {
        position: relative;
        top: -5px;
    }
        
    
    .p1{
        font-size: 14px;
        color: #07111B;
        letter-spacing: 1px;
        margin-top: 4px;
    }
    
    .p2{
        font-size: 12px;
        color: #93999F;
        line-height: 16px;
        margin-top: 2px;
        font-weight: 400;
    }
    
    #path-banner a i{
        display: inline-block;
        width: 36px;
        height: 36px;
        border-radius: 50%;
        background:url(path_new.png) no-repeat;
        background-size: 100%;
        margin-top: 22px;
    }
    
    
    .i-web{
        background-position: center 0 !important;
    }
    
    .i-java{
        background-position: center -72px !important;
    }
    
    .i-android{
        background-position: center -108px !important;
    }
    
    .i-php{
        background-position: center -36px !important;
    }
    
    .i-ios{
        background-position: center -144px !important;
    }
    
    .menu-wrap{
        background-color: #2b333b;
    }
    
    .menuContent{
        background-color: #2b333b;
        margin-top: 12px;
        overflow: hidden;
    }
    
    .item{
        height: 60px;
        line-height: 60px;
        width: 216px;
        font-size: 14px;
        padding-left: 12px;
    }
    
    
    
    .item a {
        display: inline-block;
        height: 60px;
        width: 172px;
        color: rgba(255,255,255,.6);
        text-decoration: none;
        padding-left: 16px;
        padding-right: 16px;
    }
    
    .item a:hover {
        background-color: rgba(255,255,255,.4);
        color: #fff;
        border-top-left-radius: 10px;
        border-bottom-left-radius: 10px;
    }

    JS 104行

    // 拿父控件
    const banner = document.getElementById('banner-img');
    // 通过父控件找下面的元素
    const imgs = banner.getElementsByTagName('img');
    
    console.log(imgs);
    
    //全局变量,用于记录当前页面的值
    var current = 0;
    
    function changeImg(){
    
        console.log(current);
    
        // 将除了自己以外的全部设为none
        //此时current应该是none的
        for(let i=0;i<3;i++){
            if (i!=current) {
                imgs[i].style.display="none";
            }
        }
        
        //全部消除了之后再设置
        imgs[current].style.display="block"
    }
    
    //存放interval的id
    var result ;
    
    console.log('hello');
    
    // 添加hover事件,取消轮播
    banner.addEventListener('mouseover',()=>{
        console.log('mouseover');
        clearInterval(result);
    },true);
    
    banner.addEventListener('mouseout',()=>{
    
        //定时轮播
        result= setInterval(()=>{
    
            // 超过2之后要从头开始
            if (current==3) {
                current=0;
            }
    
            //console.log(current);
    
            changeImg();
            changeDot(current);
    
            current++;
        
        },1000);
    
    },true);
    
    
    var dots = document.getElementById('dots').getElementsByTagName('span');
    
    function changeDot(index){
    
        // 先取消全部
            for(let j=0;j<3;j++){
                dots[j].className = 'dot-native';
            }
    
            dots[index].className = 'dot-active';
    }
    
    for(let i=0;i<3;i++){
    
        let temp = dots[i];
    
        // 每个按钮的操作
        temp.addEventListener('click',()=>{
    
            changeDot(i);
            //切换图片
            current=i;
            changeImg();
        });
    
    }
    
    
    //定时轮播
    result= setInterval(()=>{
    
        // 超过2之后要从头开始
        if (current==3) {
            current=0;
        }
    
        //console.log(current);
    
        changeImg();
        changeDot(current);
    
        current++;
        
    },1000);

    一共829行代码

  • 相关阅读:
    css 修改input中placeholder提示问题颜色
    js 获取屏幕或元素宽高...
    js时间相关
    golang——gRPC学习
    golang——win10环境protobuf的使用
    golang——net/rpc/jsonrpc包学习
    golang——net/rpc包学习
    golang——log包学习
    golang——database/sql包学习
    mysql——免安装配置
  • 原文地址:https://www.cnblogs.com/weizhibin1996/p/9380411.html
Copyright © 2020-2023  润新知