vue学习09 图片切换

定义图片数组:imgList:[],列表数据使用数组保存

添加图片索引:index

绑定src属性:使用v-bind,v-bind指令可以设置元素属性,比如src

图片切换逻辑:按下按钮++

切换显示状态:使用v-show,v-show和v-if都可以切换元素的显示状态,频繁切换用v-show

练习代码为:

html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>图片切换</title>
    <link rel="stylesheet" href="css/index.css">
</head>
<body>
    <div id="mask">
        <div class="center">
            <h2 class="title"><img src="https://pic.cnblogs.com/avatar/1369308/20180722204252.png" width="16" height="16"alt="">小飞的壁纸库</h2>
            <img :src="imgList[index]" alt="">
            <a href="javascript:void(0)"
                @click="prev"
                class="left"
                v-show = "index>0">
                <img src="images/prev.png" alt="">
            </a>
            <a href="javascript:void(0)"
                @click="next"
                class="right"
                v-show = "index<imgList.length-1">
            <img src="images/next.png" alt="">
            </a>
        </div>
    </div>
    <script src="js/vue.js"></script>
    <script>
        var app = new Vue({
            el:"#mask",
            data:{
                imgList:[
                    "images/01.jpg",
                    "images/02.jpg",
                    "images/03.jpg",
                    "images/04.jpg",
                    "images/05.jpg",
                    "images/06.jpg",
                    "images/07.jpg",
                    "images/08.jpg",
                    "images/09.jpg",
                    "images/10.jpg",
                ],
                index:0
            },
            methods:{
                prev(){
                    this.index--;
                },
                next(){
                    this.index++;
                }
            }
        });
    </script>
</body>
</html>

css:

* {
  margin: 0;
  padding: 0;
}

html,
body,
#mask {
  width: 100%;
  height: 100%;
}

#mask {
  background-color: #c9c9c9;
  position: relative;
}

#mask .center {
  position: absolute;
  background-color: #fff;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  padding: 10px;
}
#mask .center .title {
  position: absolute;
  display: flex;
  align-items: center;
  height: 56px;
  top: -61px;
  left: 0;
  padding: 5px;
  padding-left: 10px;
  padding-bottom: 0;
  color: rgba(175, 47, 47, 0.8);
  font-size: 26px;
  font-weight: normal;
  background-color: white;
  padding-right: 50px;
  z-index: 2;
}
#mask .center .title img {
  height: 40px;
  margin-right: 10px;
}

#mask .center .title::before {
  content: "";
  position: absolute;
  width: 0;
  height: 0;
  border: 65px solid;
  border-color: transparent transparent white;
  top: -65px;
  right: -65px;
  z-index: 1;
}

#mask .center > img {
  display: block;
  width: 700px;
  height: 458px;
}

#mask .center a {
  text-decoration: none;
  width: 45px;
  height: 100px;
  position: absolute;
  top: 179px;
  vertical-align: middle;
  opacity: 0.5;
}
#mask .center a :hover {
  opacity: 0.8;
}

#mask .center .left {
  left: 15px;
  text-align: left;
  padding-right: 10px;
  border-top-right-radius: 10px;
  border-bottom-right-radius: 10px;
}

#mask .center .right {
  right: 15px;
  text-align: right;
  padding-left: 10px;
  border-top-left-radius: 10px;
  border-bottom-left-radius: 10px;
}

运行效果为:

image-20200925090254373

image-20200925090206862

版权声明:本文为ma1998原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/ma1998/p/13728147.html