精华内容
下载资源
问答
  • 原生js编写3D轮播

    2021-04-06 09:17:46
    今天我们用原生的js和css3以及html来编写一个3D轮播,如下: 第一步,编写轮播的大致结构 使用html把创建轮播结构 <div id="box"> <!-- 创建轮播中图片的容器,注意图片的存放位置 --> <...

    原生js编写3D版轮播图

    在日常开发中,为了开发的快捷性基本上都是把UI组件中的组件拿过来用即可,但是有时可能无法实现我们的需求,这时我们就需要去造轮子。

    今天我们用原生的js和css3以及html来编写一个3D轮播图,如下:

    第一步,编写轮播图的大致结构

    使用html把创建轮播图结构

    <div id="box">
    <!--
    	创建轮播图中图片的容器,注意图片的存放位置
    -->
    	<div class="item item1">
    		<img src="./1.gif" class="swipe_item1">
    	</div>
    	<div class="item item2">
    		<img src="./2.gif" class="swipe_item2">
    	</div>
    	<div class="item item3">
    		<img src="./3.gif" class="swipe_item3">
    	</div>
    	<div class="item item4">
    		<img src="./4.gif" class="swipe_item4">
    	</div>
    	<div class="item item5">
    		<img src="./5.gif" class="swipe_item5">
    	</div>
    	<div class="item item6">
    		<img src="./6.gif" class="swipe_item6">
    	</div>
    	<div class="item item7">
    		<img src="./7.gif" class="swipe_item7">
    	</div>
    <!--
    	创建轮播图切换的按钮,由于我们的轮播图中没有设置点击图片切换的功能,所以使用一个div覆盖在了轮播图之上
    -->
    	<div id="button" style="position: absolute;top: 0;width: 100%;z-index: 999;">
    		<button type="button" onclick="left(event)" class="left switch"></button>
    		<button type="button" onclick="right(event)" class="right switch"></button>
    	</div>
    </div>
    

    使用css将轮播图结构的排列样式优化好

    /*设置整个轮播图水平居中*/
    body{
    	display: flex;
    	justify-content: center;
    	align-items: center;
    }
    /*预防按钮点击时出现丑陋的边框*/
    *{
    	outline: none;
    }
    #box{
    	margin-top: 300px;
    	width: 1350px;
    	height: auto;
    	position: relative;
    }
    /*设置定位方式,和垂直居中*/
    .item{
    	position: absolute;
    	top: 50%;
    	transform: translateY(-50%);
    }
    /*设置每个图片容器的位置:横向位置、z轴位置*/
    .item1{
    	left: 0px;
    	z-index: 9;
    }
    .item2{
    	left: 100px;
    	z-index: 18;
    }
    .item3{
    	left: 250px;
    	z-index: 27;
    }
    .item4{
    	left: 450px;
    	z-index: 36;
    }
    .item5{
    	right: 250px;
    	z-index: 27;
    }
    .item6{
    	right: 100px;
    	z-index: 18;
    }
    .item7{
    	right: 0;
    	z-index: 9;
    }
    /*设置图片的宽度*/
    .swipe_item1{
    	width: 300px;
    }
    .swipe_item2{
    	width: 350px;
    }
    .swipe_item3{
    	width: 400px;
    }
    .swipe_item4{
    	width: 450px;
    }
    .swipe_item5{
    	width: 400px;
    }
    .swipe_item6{
    	width: 350px;
    }
    .swipe_item7{
    	width: 300px;
    }
    /*为图片设置阴影,更好的凸显3D效果*/
    img{
    	box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
    	border-radius: 10px;
    }
    /*设置切换按钮的位置,及样式*/
    .left{
    	left: 100px;
    }
    .right{
    	right: 100px;
    }
    .switch{
    	position: absolute;
    	top: 50%;
    	transform: translateY(-50%);
    	width: 50px;
    	height: 50px;
    	border-radius: 50%;
    	border: none;
    	background-color: rgba(0,0,0,0.4);
    	color: white;
    }
    .switch:hover{
    	background-color: rgba(0,0,0,0.7);
    }
    

    至此轮播图的基本结构已经完成,此时的效果如下:
    在这里插入图片描述
    我们总结一下上面的主要代码:

    1. 为图片容器设置绝对(absolute)定位
    2. 设置图片容器垂直居中
    3. 根据绝对定位为图片容器设置所处位置(横向)和z轴位置
    4. 切换按钮始终悬浮

    第二步,使用css3写切换动画

    我们以最突出的图片class="item4"为例,来编写动画。
    首先,确定to和from,即动画中的“起点”和“终点”,把item4移动到item3的位置上。确定需要变化的属性:

    1. 图片的width
    2. 容器大width
    3. 容器的位置(left)
      查看item3和item4的css代码,如下:
    /*容器*/
    .item3{
    	left: 250px;
    	z-index: 27;
    }
    .item4{
    	left: 450px;
    	z-index: 36;
    }
    /*图片*/
    .swipe_item3{
    	width: 400px;
    }
    .swipe_item4{
    	width: 450px;
    }
    

    因此动画css代码如下:

    .animation4 {
    	animation: item4_animation 1s; 
    	animation-fill-mode: forwards; /*设置动画结束后,元素停在终点*/
    }
    
    .a4 {
    	animation: item4_animation_index 1s;
    	animation-fill-mode: forwards;
    }
    
    @keyframes item4_animation {
    	from {
    		width: 450px;
    	}
    
    	to {
    		width: 400px;
    	}
    }
    
    @keyframes item4_animation_index {
    	from {
    		width: 450px;
    		left: 450px;
    	}
    
    	to {
    		width: 400px;
    		left: 250px;
    	}
    }
    

    第三步,改变元素的z-index属性

    在第二步中,我们改变了容器和图片的位置和大小,但是z-index并没有改变:我们使用js来改变z-index

    document.getElementsClassName("item4").style.zIndex = 27
    

    至此,我们已经将item4通过动画的方式移动到了item3的位置上,效果如下:
    在这里插入图片描述
    问题:

    1. 移动后的item4覆盖了item3
    2. 如果我们下次再移动item4,item4会自动跳到的初始位置,然后再开始动画

    上面的两个问题如何解决呢?
    第一个问题,轮播图的最终效果是所有图片一起移动,因此不会出现覆盖问题
    第二个问题,我们可以在动画结束之后,通过js把class=“item4”变成class=“item3”(由于我们现在向左移动)

    以上都是以item4这一个元素的移动来进行分析

    第四步,分析

    1. 使用css为每一个容器的移动,编写动画代码,动画分为左和右
    2. 使用js来改变移动后的容器的 “z-index” 属性
    3. 使用js来切换对应的class,并删除当前的class,根据向左和向右改变class,例:
      向左移动:item4 => item3 | item1 => item7
      向右移动:item4 => item5 | item7 => item1

    第五步,js动态设置切换

    我们以代码为例:

    let flag = true
    let autoFlag = true
    function left(e){
    //只有上一个动画结束后,才能继续切换
    	if(!flag){
    		return
    	}
    	flag = false
    	//获取页面中所有的item,即所有的图片容器
    	let arr = document.getElementsByClassName("item")
    	for(let i=1;i<=arr.length;i++){ //由于没有item0,所以从1开始
    		let item = document.getElementsByClassName("item"+i)[0] //通过("item"+i)拼接得到对应的class,如item1
    		let swipe_item = document.getElementsByClassName("swipe_item"+i)[0]//同理可得swipe_item1
    		swipe_item.classList.add("animation"+i) //为图片添加width改变动画
    		item.classList.add("a"+i) //为容器添加width和位移改变动画
    		//如下:根据不同i,实际是不同的("item"+i),来设置对应的z-index
    		setTimeout(()=>{
    			switch(i){
    				case 7:
    					item.style.zIndex = 18
    					break
    				case 6:
    					item.style.zIndex = 27
    					break
    				case 5:
    					item.style.zIndex = 36
    					break
    				case 4:
    					item.style.zIndex = 27
    					break
    				case 3:
    					item.style.zIndex = 18
    					break
    				case 2:
    					item.style.zIndex = 9
    					break
    			}
    		},500) //时间可变,根据需求
    		//当动画加载完成后,我们来切换class
    		setTimeout(()=>{
    		//注意:在切换class时,一定要配合 animation-fill-mode: forwards; 使用
    			//我们先把图片和容器的动画class和原始class删除
    			swipe_item.classList.remove("animation"+i)
    			swipe_item.classList.remove("swipe_item"+i)
    			item.classList.remove("a"+i)
    			item.classList.remove("item"+i)
    			//由于是向左移动,item1要移动到item7的位置上,所以item1需要特殊处理
    			if(i != 1){
    				swipe_item.classList.add("swipe_item"+(i-1))
    				item.classList.add("item"+(i-1))
    			}else{
    			//如果i = 1 时,该容器(移动的容器和图片)添加swipe_item7和item7到classList中
    				swipe_item.classList.add("swipe_item"+7)
    				item.classList.add("item"+7)
    			}
    			flag = true
    		},1000) //对应动画执行的时间
    	}
    }
    

    至此我们便可以随意向左切换:
    向右移动的方式参考向左移动的方法,需要注意z-index的设置,和切换class,代码如下:

    function right(e){
    	if(!flag){
    		return
    	}
    	flag = false
    	let arr = document.getElementsByClassName("item")
    	for(let i=1;i<=arr.length;i++){
    		let item = document.getElementsByClassName("item"+i)[0]
    		let swipe_item = document.getElementsByClassName("swipe_item"+i)[0]
    		swipe_item.classList.add("r_animation"+i)
    		item.classList.add("r_a"+i)
    		setTimeout(()=>{
    			switch(i){
    				case 6:
    					item.style.zIndex = 9
    					break
    				case 5:
    					item.style.zIndex = 18
    					break
    				case 4:
    					item.style.zIndex = 27
    					break
    				case 3:
    					item.style.zIndex = 36
    					break
    				case 2:
    					item.style.zIndex = 27
    					break
    				case 1:
    					item.style.zIndex = 18
    					break
    			}
    			
    		},500)
    		setTimeout(()=>{
    			swipe_item.classList.remove("r_animation"+i)
    			swipe_item.classList.remove("swipe_item"+i)
    			item.classList.remove("r_a"+i)
    			item.classList.remove("item"+i)
    			if(i != 7){
    				swipe_item.classList.add("swipe_item"+(i+1))
    				item.classList.add("item"+(i+1))
    			}else{
    				swipe_item.classList.add("swipe_item"+1)
    				item.classList.add("item"+1)
    			}
    			flag = true
    		},1000)
    	}
    }
    

    自动滚动和鼠标事件:

    document.getElementById("box").onmouseover = ()=>{
    autoFlag = false
    }
    document.getElementById("box").onmouseout = ()=>{
    	autoFlag = true
    }
    setInterval(()=>{
    	if(autoFlag){
    		right()
    	}
    },5000)
    

    至此,我们所有的功能都以实现

    源码

    3D轮播图的源码:(css、js、html)
    源码链接

    展开全文
  • public class Base64Util { /** * 本地图片转换Base64的方法 * @param imgPath */ public static String getImageStr(String imgPath){ byte[] data = null; // 读取图片字节数组 ...
    public class Base64Util {
        /**
         * 本地图片转换Base64的方法
         * @param imgPath     
         */
    
        public static String getImageStr(String imgPath){
            byte[] data = null;
            // 读取图片字节数组
            InputStream in  =null;
            try {
                BufferedImage bufferedImage = ImageIO.read(new File(imgPath));
                int width = bufferedImage.getWidth();
                int height = bufferedImage.getHeight();
                //当图片为3:4比例时,不进行拼接
                if(height/4==width/3) {
                    in = new FileInputStream(imgPath);
                    data = new byte[in.available()];
                    in.read(data);
                    in.close();
                }else {
                    in =  reSize(imgPath,width,height);
                    data = new byte[in.available()];
                    in.read(data);
                    in.close();
                    String resizePath =  imgPath.replace(".jpg","resize.jpg");
                    File resizeFile = new File(resizePath);
                    //占空间,删除合成的新图片
                    if (resizeFile.exists()){
                       //可以不删除
                       //resizeFile.delete();
                    }else{
                        in  = new FileInputStream(imgPath);
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            // 对字节数组Base64编码
            BASE64Encoder encoder = new BASE64Encoder();
            // 返回Base64编码过的字节数组字符串
    
            return encoder.encode(Objects.requireNonNull(data));
        }
    
        public  static InputStream reSize(String path,Integer width,Integer height) throws IOException {
    //        BufferedImage bufferedImage = ImageIO.read(new File(path));
    //        int width = bufferedImage.getWidth();
    //        int height = bufferedImage.getHeight();
            int origalTotalRGB = width*height;
            int smallWidth;
            int smallHeigth;
            int type = 0;
            if (height/4>width/3){
                smallWidth = height/4*3-width;
                smallHeigth = height;
                type = 1;
            }else {
                smallHeigth = width/3*4-height;
                smallWidth = width;
                type = 2;
            }
            BufferedImage image = new BufferedImage(smallWidth, smallHeigth,
                    BufferedImage.TYPE_INT_RGB);
            Graphics2D g = (Graphics2D) image.createGraphics();
            g.setColor(Color.WHITE);
            g.fillRect(0,0,smallWidth,smallHeigth);//填充整个屏幕
            g.drawLine(10, 100, 300, 100);
            g.dispose();
            File file = new File(path.replace(".jpg","_temp.jpg"));
            ImageIO.write(image, "jpg", file);
            String[] paths = new String[]{path, file.getAbsolutePath()};
            return mergeImage(paths,type,path.replace(".jpg","resize.jpg"));
        }
    
        /**
         * @Description:图片拼接 (注意:必须两张图片长宽一致哦)
         * @author:liuyc
         * @time:2016年5月27日 下午5:52:24
         * @param files 要拼接的文件列表
         * @param type 1  横向拼接, 2 纵向拼接
         */
        public static InputStream mergeImage(String[] files, int type, String targetFile) {
            int len = files.length;
            if (len < 1) {
                throw new RuntimeException("图片数量小于1");
            }
            File[] src = new File[len];
            BufferedImage[] images = new BufferedImage[len];
            int[][] ImageArrays = new int[len][];
            for (int i = 0; i < len; i++) {
                try {
                    src[i] = new File(files[i]);
                    images[i] = ImageIO.read(src[i]);
                } catch (Exception e) {
                    throw new RuntimeException(e);
                }
                int width = images[i].getWidth();
                int height = images[i].getHeight();
                ImageArrays[i] = new int[width * height];
                ImageArrays[i] = images[i].getRGB(0, 0, width, height, ImageArrays[i], 0, width);
            }
            int newHeight = 0;
            int newWidth = 0;
            for (int i = 0; i < images.length; i++) {
                // 横向
                if (type == 1) {
                    newHeight = newHeight > images[i].getHeight() ? newHeight : images[i].getHeight();
                    newWidth += images[i].getWidth();
                } else if (type == 2) {// 纵向
                    newWidth = newWidth > images[i].getWidth() ? newWidth : images[i].getWidth();
                    newHeight += images[i].getHeight();
                }
            }
            // 生成新图片
            try {
                BufferedImage ImageNew = new BufferedImage(newWidth, newHeight, BufferedImage.TYPE_INT_RGB);
                int height_i = 0;
                int width_i = 0;
                for (int i = 0; i < images.length; i++) {
                    if (type == 1) {
                        ImageNew.setRGB(width_i, 0, images[i].getWidth(), newHeight, ImageArrays[i], 0,
                                images[i].getWidth());
                        width_i += images[i].getWidth();
                    } else if (type == 2) {
                        ImageNew.setRGB(0, height_i, newWidth, images[i].getHeight(), ImageArrays[i], 0, newWidth);
                        height_i += images[i].getHeight();
                    }
                }
                //输出想要的图片
                ImageIO.write(ImageNew, targetFile.split("\\.")[1], new File(targetFile));
                InputStream in = new FileInputStream(targetFile);
                //删除白色拼图
                new File (files[1]).delete();
                return in;
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        }
        public static void main(String[] args) throws Exception {
            String s = getImageStr("C:\\Users\\JTao\\Desktop\\images\\1\\3.jpg");
            //打印新图片的的base64码
            System.out.println("data:image/jpeg;base64,"+s);
        }
    }
    展开全文
  • 小项目:python3爬虫抓取王者荣耀所有英雄皮肤原图Python环境:python3.6.4author : Chris iven效果图:代码:class WZRY_Hero(object): Origin_url = "http://pvp.qq.com/web201605/" def __init__(self...

    小项目:python3爬虫抓取王者荣耀所有英雄皮肤原图

    Python环境:python3.6.4

    author : Chris iven

    效果图:

    代码:

    class WZRY_Hero(object):
        Origin_url = "http://pvp.qq.com/web201605/"
        
    
        def __init__(self,url):
            self.url = url
    
        def get_hero_info(self):
    
            res = requests.get(self.url)
            with open("herodata.json", "w", encoding="utf-8") as f:
                f.write(json.dumps(res.text))
    
            # JSON.LOADS() 将文本转换为json对象
            # JSON.DUMPS() json对象转换为文本
            with open("herodata.json", "r", encoding="utf-8") as f:
                str = json.loads(f.read())
            data2 = json.loads(str)
    
            hero_number = []
            hero_name = []
    
            for i in data2:
                hero_number.append(i.get("ename"))
                hero_name.append(i.get("cname"))
    
            #print(hero_name, '\n', hero_number)
            return hero_number, hero_name
        def write_to_mysql(self,url,):
            db = pymysql.connect("localhost","root","123456","game_skin","charset")
            pass
    
    
        def download_pic(self,url_number,name):
            i = 0
            while i < len(url_number):
                #//game.gtimg.cn/images/yxzj/img201606/skin/hero-info/169/169-bigskin-2.jpg
                j = 1
                while j < 8:
                    old_url = "http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/"+str(url_number[i])+"/"+str(url_number[i])+"-bigskin-"+str(j)+".jpg"
                    #new_url = old_url+"-bigskin-"+str(j)+".jpg"
                    print(name[i]+'的下载的链接是:',old_url)
                    response = requests.get(old_url,timeout=10)
                    if "404 page not found" in response.text:
                        print("网页错误,无法打开!!!")
                        break
                    else:
                        try:
                            os.mkdir("王者荣耀各英雄的皮肤/"+name[i])
                        except FileExistsError:
                            pass
                        print(name[i],"已经创建!!!")
                        with open("王者荣耀各英雄的皮肤/"+name[i]+"/"+str(j) + ".jpg", "wb")as f:
                            f.write(response.content)
                        print(name[i]+"已经下载完毕!!!")
                    j+=1
                i+=1
    
        def Main(self):
            number ,name = self.get_hero_info()
            self.download_pic(number,name)
    
    
    
    if __name__ == "__main__":
    
        url = "http://pvp.qq.com/web201605/js/herolist.json"
        wz = WZRY_Hero(url)
        wz.Main()

    难度: *

    大家可以尝试着交换思路,反正我是没找到皮肤的原名....



    展开全文
  • 一、功能需求 1、自动播放2、滑动切换3、点击切换 二、思路分析 ... <div class="container">...ul class="list clearfix">...li class="item fl item5">5</li>  <li class="item fl i...

    一、功能需求

    1、自动播放
    2、滑动切换
    3、点击切换

    二、思路分析

    html代码:

    <div class="container">
      <ul class="list clearfix">
      <li class="item fl item5">图5</li>
      <li class="item fl item1">图1</li>
      <li class="item fl">图2</li>
      <li class="item fl">图3</li>
      <li class="item fl">图4</li>
      <li class="item fl item5">图5</li>
      <li class="item fl item1">图1</li>
      </ul>
      <ul class="list-btn clearfix">
      <li class="btn choosed"></li>
      <li class="btn"></li>
      <li class="btn"></li>
      <li class="btn"></li>
      <li class="btn"></li>
      </ul>
    </div>

    css代码:

    /* 轮播图样式 */
    .container{
    width: 100%;
    height: 6rem;
    overflow: hidden;
    position: relative;
    }
    .list{
    height: 100%;
    position: absolute;
    width: 100rem;
    background-color: pink;
    transform: translateX(-10rem);
    }
    .item{
    height: 100%;
    width: 10rem;
    text-align: center;
    line-height: 3rem;
    font-size: 2rem;
    border: 1px solid #fff;

    }
    .item1{
    background-color: yellowgreen;
    }
    .item5{
    background-color: skyblue;
    }

    /* 按钮 */
    .list-btn{
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
    bottom: 1rem;

    }
    .btn{
    float: left;
    width: 0.5rem;
    height: 0.5rem;
    border-radius: 50%;
    margin-right: 10px;
    background-color: #fff;
    }
    .choosed{
    background-color: blue;
    }

     

    总体思路:图片列表放在ul中,通过设置ul列表的位移来实现图片的切换

    1、定时器实现自动播放

    用索引值index来定位ul列表的translateX属性值,用定时器来控制index的增加。再根据index 的大小以及图片的宽度来计算ul列表的位移。为了解决首末图片闪动的问题,在首尾多加一张图片。详细请看html代码部分

    2、滑动切换

    利用touch事件,记录滑动距离,再根据滑动距离进行判断,当超过某个值的时候,实现图片的切换,低于该值的时候,则图片停留在原位置

    3、点击按钮切换

    点击选中按钮,展示对应图片。同时给相应的按钮添加被选中的背景色

     

    三、重点来了

    js代码,注释很清楚,有不明白 的可留言

     

    //实现功能:
    //1、自动播放
    //2、滑动切换
    //3、点击切换
    window.onload = function() {
    //滑动图片,列表移动
    var list = document.querySelector('.list');

    //记录当前展示图片的索引值
    var index = 1;
    //1、自动播放
    var timer; //定义定时器
    autoSlide();

    //2、滑动切换
    //定义变量记录滑动起始坐标,滑动距离,滑动结束坐标
    var startX = 0,
    moveX = 0,
    distacenX = 0,
    srem = document.querySelector('html').style.fontSize;
    list.addEventListener('touchstart', function(e) {
    //滑动的时候清除定时器,清除渐变属性

    clearInterval(timer);
    removeTransition(list);

    startX = e.touches[0].clientX;
    });
    list.addEventListener('touchmove', function(e) {
    moveX = e.touches[0].clientX;

    distanceX = moveX - startX;

    distanceX = distanceX / parseInt(srem);

     

    //根据滑动距离改变图片列表的位移
    slideX(list, index * 10 - distanceX);
    })
    list.addEventListener('touchend', function(e) {
    if (Math.abs(distanceX) >= 5 && distanceX < 0) {
    index++;
    }
    if (Math.abs(distanceX) >= 5 && distanceX > 0) {

    index--;
    }

    addTransition(list);
    slideX(list, index * 10);

    //滑动结束,判断是否到最后一张,或者是第一张
    if (index == 6) {
    index = 1;
    setTimeout(function() {

    removeTransition(list);
    slideX(list, index * 10);
    }, 500)

    }

    if (index == 0) {
    setTimeout(function() {
    index = 5;
    removeTransition(list);
    slideX(list, index * 10);
    }, 500)
    }

    addBgc();
    //滑动结束, 添加定时器
    autoSlide();
    })


    //3、点击切换
    var btns = document.querySelectorAll('.btn');
    btns.forEach(function(v, i) {
    v.addEventListener('click', function(e) {
    //给被点击的按钮加个背景色

    //清除定时器
    clearInterval(timer);
    removeTransition(list);
    index = i + 1;
    slideX(list, index * 10);
    //给按钮添加背景色
    addBgc();
    //恢复定时器
    autoSlide();
    })
    })

     

    //工具函数
    //实现位移
    function slideX(v, x) {

    v.style.transform = 'translateX(-' + x + 'rem)';
    v.style.webkitTransform = 'translateX(-' + x + 'rem)';
    }
    //添加渐变属性
    function addTransition(v) {
    v.style.transition = "all 0.5s";
    v.style.webkitTransition = "all 0.5s";
    }
    //移除渐变属性
    function removeTransition(v) {

    v.style.transition = 'none';
    v.style.webkitTransition = 'none';
    }

    //给按钮添加背景
    function addBgc() {
    btns.forEach(function(v, i) {
    v.className = 'btn';
    if (i + 1 == index) {
    v.className = 'btn choosed';
    }
    })
    }

    //设置定时器,让图片轮播
    function autoSlide() {
    timer = setInterval(function() {

    index++;
    addTransition(list);
    slideX(list, index * 10);
    //给按钮添加背景色

    if (index == 6) {
    index = 1;
    setTimeout(function() {

    removeTransition(list);
    slideX(list, index * 10);
    }, 500)

    }

    addBgc();

    }, 1000);
    console.log(timer)
    }

    }

     

    四、备注

    因为用rem进行了适配,所以在js代码中,有相应的单位转换,px转rem

     

    ------------------------------------------------------------------------

    ------------------------------------------------------------------------

    ------------------------------------------------------------------------

    工作中这样的轮播图很常见,虽然网上插件有很大可以实现这个效果,但是自己动手敲出来感觉会不一样。希望能对朋友们有帮助。

     

    转载于:https://www.cnblogs.com/justinwxt/p/7077644.html

    展开全文
  • 原生JavaScript轮播

    2019-08-02 15:44:20
    原生JavaScript实现图片轮播 ...<div class="container"> <div class="wrap" style=" left:0px"> ...img src="imagess/9c16fdfaaf51f3dee348a3f19feef01f3b2979a8.jpg"/> <img...
  • 3、拖拽图片时,给图片添加阴影 2、MainWindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> namespace Ui { class MainWindow; } class MainWindow : public ...
  • div class="box"> <img src="./img/1.jpg" alt=""> <img src="./img/2.jpg" alt=""> <img src="./img/3.jpg" alt=""> <img src="./img/4.jpg" alt=""> <img src="./img/5.jpg" ...
  • 现在自学前端中,学到移动端,在做一个项目,课程开始用原生的方法写轮播(无缝),但是视频讲的是面向过程的方式,现在自己用面向对象的方式写一下。 ## 上代码 ## html的代码 &lt;div class="jd_nav&...
  • 原生js轮播

    2018-05-16 00:07:04
    效果i3.功能分析 (1)主要讲js 首先是图片自动播放。 (2)鼠标经过数字的时候切换对应的图片 (3)点击左右按钮切换图片4.原理和布局。一个装图片的容器ul 一个显示数字的容器 左右按钮 &lt;div class=&...
  • 如上,做一个图片查看器,点击打开可以选择要打开的文件夹,如下批量选择图片,此处要是没有选择批量...按钮ID:IDC_BUTTON2程序如下:Test3Dlg.hclass CTest3Dlg : public CDialog{// Constructionpublic:CTest...
  • 手写原生JS轮播

    2020-08-12 11:44:09
    轮播也称为焦点,是网页中比较常见的网页特效 本文主要制作6个效果 效果1: 当鼠标移入轮播时,左右箭头显示出来,离开隐藏左右按钮 效果2: 点击轮播左右按钮就会有图片改变的效果 ...div class="foc
  • 3.注意修改L16的"for idx in xrange(5)",这里的数字是原图数量 4.xrange要导包,选中Alter+Enter,有哪个就导哪个 5.自己创建保存的目录 import os import os.path import numpy as np import xml.etree.Element...
  • 仿铁血无损原图底部水印系统。后台设置各项参数,无需修改文件。在图片底部加文字水印,不伤害原图画质。 新核心,不需要修改文件,可选择版块、用户组,自定义文字,多少图片宽度以下不使用。 因附件大小原因,...
  • MagicEXIF 1.03 是目前最专业和最强大的EXIF信息修改器,不仅可以读取和修改JPEG、TIFF、RAW文件中的全部EXIF信息和GPS信息,更可以...成功通过JPEGsnoop的Class3检测(是实实在在的Class3!!不是忽悠别人的Class4!)
  • 效果 wxml代码 ```clike <!--头部信息--> <view class='toubu'> <view class='toubu-zuo'> <open-data type="userAvatarUrl" class="toubu-zuo-touxiang"></open-data> </...
  • 原生js无缝轮播

    2020-09-02 23:04:58
    1.构建轮播首先需要布局,布局可以帮助我们更加清楚当前得步骤,方便整理思路 2.本次案例中我用的是构造函数-面向对象编程,按需求,不断地细节化,不断拆分,拆分成可以直接实现地需求,然后面对对象地设计,...
  • 原生JS实现网站首页轮播效果 !记得修改图片路径ok html <div class="index-banner"> <ul class="banner-inner"> <li class="first" style="background:#aac7f3 ...
  • 原生js制作PC端轮播

    2020-07-30 20:27:26
    3.拖欠播放同时,下面的小圆圈也跟着变化 4.点击小圆圈,播放相应的图片 5.鼠标不经过轮播,轮播自动播放 6.鼠标经过轮播,自动播放停止 HTML标签的结构及css样式 <div class="box"> <!-- 左侧按钮...
  • <div class="img-box"> <div class="img-item active">1</div> <div class="img-item">2</div>...div class="img-item">3</div> <div class="img-posi...
  • demo 设置3s自动轮播时,点击圆点或按钮会出现点击后仍然按定时器跳转到下一张,有时时间间隔非常短,...div class="container"&gt; &lt;div class="slider"&gt; &lt;ul...
  • 原生CSS写轮播

    2020-07-07 00:23:59
    div class="banner"> <a id="bnimg1" href="/1.jpg" target="_blank"></a> <a id="bnimg2" href="/2.jpg" target="_blank"></a> <a id="bnimg3" href="/3.jpg" target="_blank...
  • 原生js——点击图片放大预览

    千次阅读 2020-07-03 23:33:53
    <body id="app"> <div class="row" id="video"> <div class="col-xs-12 col-sm-3 image center-block">...img src="./images/feedback/01.jpg" alt="" />...div class="col-xs-12 col-sm-3 image"&
  • 原生 js 轮播小案例1效果2html3js4css5结构目录 1效果 2html <div class="all" id='box'> <div class="screen"> <!--相框--> <ul> <li><img src="images/1...
  • 实现原理 前面加一张=最后的图片,最后面加一张原先的第一的图片 ...<div class="box"> <ul class="box-ul">...3</li> <li>4</li> <li>5</li> <li>1<

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 602
精华内容 240
关键字:

原图class3