zoukankan      html  css  js  c++  java
  • 基本_移动类型轮播效果_框架

    一、基本元素:

    D:display window;用户浏览的窗口;

    S:scroll window;存放内容的大容器;通过移动来改变显示的内容;

    C:content;内容信息;

    B:button;按钮,多种样式,可选;

    二、思路:

    通过移动S 的位置,由于C位于S中,所有的C将会同时跟随S而移动。

    在D中显示的内容将会被改变。

    三、html结构:

    1 <div class=”D”>
    2  <div class=”S”>
    3         <div class=”C”>content</div>
    4         <div class=”C”>content</div>
    5         <div class=”C”>content</div>
    6  </div>
    7 </div>

    四、内容设置:

      1、主要部分:

     1 1.样式:
     2      D:
     3          overflow: hidden;
     4          使超出D大小即溢出内容隐藏起来。
     5      S:
     6          position: relative;
     7          left: 0px;
     8          因为S需要进行移动,因此添加一个相对定位属性,并初始偏移值。
     9      C:
    10          float: left;
    11          这个属性使C可以横向排列,这是针对块元素的设置。
    12 2.js:
    13      var scr = document.getElementsByClassName('S')[0];
    14      scr.style.left = (-1) * 500 * j + 'px';
    15      获取到S这个元素,并重设它的偏移值。

      2、次要部分:

     1 1.样式:
     2     DSC宽高比:
     3     D_width=C_width,S_width=C_width*C_count;
     4     D_height=S_height=C_height;
     5   
     6 2.js:
     7     偏移值:left,C的id:C_id,每个C的宽度:C_width;
     8     left=-(C_id*C_width);
     9 3.动画过渡:
    10   transition:改变的属性 过渡使用时间 运动模式 延迟时间;
    11   此属性可以扩展,本例中该属性只影响视觉效果,不影响框架;

      /* 元素的left属性为元素水平偏移,正值向右,负值向左。当C进行切换的时候,这个C需要被显示到D的正中央,那么在它左边的其他的C(或者没有)就需要向左移动。移动的总距离就等于C的个数*C的宽度。*/

    以上是 DSCB 框架的基本属性设置。接下来将介绍运动实现(js)

    运动实现:

    本例中使用的是:非自动轮播,按钮触发切换。

    本例使用的demo。

     1 <!DOCTYPE html>
     2 <html>
     3 <head lang="en">
     4     <meta charset="UTF-8">
     5     <link type="text/css" rel="stylesheet" href="style.css"/>
     6     <title>DSCB</title>
     7 
     8 </head>
     9 <body>
    10 <div class="D">
    11     <div class="S">
    12         <div class="C" style="background-color: #ff7ea7;">content_1</div>
    13         <div class="C" style="background-color: #0cbaff;">content_2</div>
    14         <div class="C" style="background-color: #25ec81;">content_3</div>
    15     </div>
    16     <div class="B">
    17         <div class="B_number B_number_checked"></div>
    18         <div class="B_number"></div>
    19         <div class="B_number"></div>
    20     </div>
    21 </div>
    22 <hr/>
    23 </body>
    24 <script type="text/javascript">
    25     function Box_change() {
    26         var btn = document.getElementsByClassName('B_number');
    27         var scr = document.getElementsByClassName('S')[0];
    28         // 绑定按钮点击事件;
    29         for (var i = 0; i < btn.length; i++) {
    30             btn[i].onclick = function btn_onclick() {
    31                 for (var j = 0; j < btn.length; j++) {
    32                     if (btn[j] === this) {
    33                         scr.style.left = (-1) * 500 * j + 'px';
    34                         btn[j].className = 'B_number B_number_checked';
    35                     } else {
    36                         btn[j].className = 'B_number';
    37                     }
    38                 }
    39             }
    40         }
    41     }
    42 </script>
    43 <script type="text/javascript">
    44     window.onload = function main() {
    45         Box_change();
    46     }
    47 </script>
    48 </html>
    HTML 结构文档
     1 .D {
     2     width: 500px;
     3     height: 340px;
     4     margin: 0px auto;
     5     border: 1px solid #000000;
     6     overflow: hidden;
     7 }
     8 
     9 .S {
    10     position: relative;
    11     left: 0px;
    12     width: 1600px;
    13     height: 300px;
    14     transition: all 0.5s ease-in-out 0.0s;
    15     -moz-transition: all 0.5s ease-in-out 0.0s;
    16     -ms-transition: all 0.5s ease-in-out 0.0s;
    17     -o-transition: all 0.5s ease-in-out 0.0s;
    18     -webkit-transition: all 0.5s ease-in-out 0.0s;
    19 }
    20 
    21 .C {
    22     float: left;
    23     width: 460px;
    24     height: 280px;
    25     margin: 10px 20px;
    26     text-align: center;
    27     font-size: 32px;
    28     line-height: 300px;
    29 }
    30 
    31 .B {
    32     width: 180px;
    33     height: 30px;
    34     margin: 0px auto;
    35     text-align: center;
    36 }
    37 
    38 .B_number {
    39     float: left;
    40     width: 20px;
    41     height: 20px;
    42     margin: 5px 20px;
    43     background-color: #000000;
    44     opacity: 0.1;
    45     cursor: pointer;
    46 }
    47 
    48 .B_number:hover, .B_number_checked {
    49     opacity: 0.8;
    50 }
    51 
    52 p {
    53     font-size: 30px;;
    54     text-indent: 5em;
    55 }
    CSS 样式表

    1.获取元素

    1 //获取所有按钮;
    2 var btn = document.getElementsByClassName('B_number');
    3 //获取Scroll window;
    4 var scr = document.getElementsByClassName('S')[0];

    *因为S使用了类作标记,所有要获取类组中的第一个元素:scr[0];也可以使用id作标记;

    2.给所有的按钮绑定点击事件:

    1 for (var i = 0; i < btn.length; i++) {
    2     btn[i].onclick = function btn_onclick() {
    3     }
    4 }    

    3.设置水平偏移值(内容切换):

    1 for (var j = 0; j < btn.length; j++) {
    2     if (btn[j] === this) {
    3         scr.style.left = (-1) * 500 * j + 'px';
    4         btn[j].className = 'B_number B_number_checked';
    5     } else {
    6         btn[j].className = 'B_number';
    7     }
    8 }

    /* 语义分析:当按钮被点击时,判断被点击的这个按钮(this)是按钮条中的第几个(id)按钮,按钮的序号与C(内容)的序号是一一对应的。获取到按钮的序号即知道要显示的C的序号。

    修改偏移值:该偏移值根据要显示的C的序号来计算,即:left=-(C_id*C_width); */


    The end.

    by Little


  • 相关阅读:
    elasticseacth基础操作--QueryBuilders的使用
    并发编程(八)并发安全
    redis集群 相关
    并发编程(七)线程池
    PMP--综合考试知识点,持续更新中。。。
    常用正则表达式
    测试计划
    ACC(Attribute Component Capability) 即特质,组件,能力
    LockScreen
    Custom Window
  • 原文地址:https://www.cnblogs.com/darcrand-blog/p/5740588.html
Copyright © 2011-2022 走看看