html制作图片幻灯片效果代码,【JS+CSS3】实现带预览图幻灯片效果的示例代码

html制作图片幻灯片效果代码,【JS+CSS3】实现带预览图幻灯片效果的示例代码一、前期准备1.1案例分析适用场景:单例布局1.2方法论V视图HTML+CSS+调试Cjs实现控制流程D数据优化扩展二、代码结构h2captionh3caption样式(CSS略)脚本功能开发>>内容输出Template改造输出幻灯片&控制按钮图片位置调整>>切换控制切换幻灯片.main_i_active切换控制按钮.ctrl…

大家好,又见面了,我是你们的朋友全栈君。

一、前期准备

1.1 案例分析

适用场景:单例布局

1.2 方法论

V视图 HTML+CSS+调试

C js实现控制流程

D数据 优化扩展

二、代码

结构

h2 caption

h3 caption

html制作图片幻灯片效果代码,【JS+CSS3】实现带预览图幻灯片效果的示例代码

html制作图片幻灯片效果代码,【JS+CSS3】实现带预览图幻灯片效果的示例代码

样式(CSS略)

脚本功能开发

>>内容输出

Template改造 输出幻灯片&控制按钮 图片位置调整

>>切换控制

切换幻灯片 .main_i_active 切换控制按钮 .ctrl_i_active

0、修改VIEW ->Template(关键字替换),增加Template id

图片区

{
{h2}}}

{
{h3}}}

%7B%7Bindex%7D%7D.jpg

按钮区

图片预览

下面是重点 JS脚本的编写~~

// 1、数据定义(实际生产环境,应由后台给出)

var data = [

{img:1,h2:”我是标题二,小标题”,h3:”我是标题三,大标题”},

{img:2,h2:”我是标题二,小标题”,h3:”我是标题三,大标题”},

{img:3,h2:”我是标题二,小标题”,h3:”我是标题三,大标题”},

{img:4,h2:”我是标题二,小标题”,h3:”我是标题三,大标题”},

{img:5,h2:”我是标题二,小标题”,h3:”我是标题三,大标题”},

{img:6,h2:”我是标题二,小标题”,h3:”我是标题三,大标题”},

{img:7,h2:”我是标题二,小标题”,h3:”我是标题三,大标题”},

];

// 2、通用函数

var g = function(id){

if( id.substr(0,1) ==”.” ){

return document.getElementsByClassName( id.substr(1) );

}

return document.getElementById(id);

}

// 3、添加幻灯片的操作(所有幻灯片&对应的按钮)

function addSliders(){

// 3.1 获取模版

var tpl_main = g(“template_main”).innerHTML

.replace(/^\s*/,”)

.replace(/\s*$/,”);

var tpl_ctrl = g(“template_ctrl”).innerHTML

.replace(/^\s*/,”)

.replace(/\s*$/,”);

// 3.2 定义最终输出HTML的变量

var out_main = [];

var out_ctrl = [];

// 3.3 遍历所有数据,构建最终输出的HTML

for( i in data ){

var _html_main = tpl_main

.replace(/{
{index}}/g,data[i].img)

.replace(/{
{h2}}/g,data[i].h2)

.replace(/{
{h3}}/g,data[i].h3)

.replace(/{
{css}}/g,[”,’main_i_right’][i%2]);

var _html_ctrl = tpl_ctrl

.replace(/{
{index}}/g,data[i].img);

out_main.push(_html_main);

out_ctrl.push(_html_ctrl);

}

// 3.4 把HTML回写到对应的DOM里面

g(“template_main”).innerHTML = out_main.join(”);

g(“template_ctrl”).innerHTML = out_ctrl.join(”);

// 7、增加#main_background

g(‘template_main’).innerHTML += tpl_main

.replace(/{
{index}}/g,'{
{index}}’)

.replace(/{
{h2}}/g,data[i].h2)

.replace(/{
{h3}}/g,data[i].h3);

g(‘main_{
{index}}’).id = ‘main_background’;

}

// 5、幻灯片切换

function switchSliders(n){

// 5.1 获得要展现的幻灯片&控制按钮 DOM

var main = g(“main_”+n);

var ctrl = g(“ctrl_”+n);

// 5.2 获得所有的幻灯片&控制按钮

var clear_main = g(‘.main_i’);

var clear_ctrl = g(‘.ctrl_i’);

// 5.3 清除他们的active样式

for(var i=0;i

clear_main[i].className = clear_main[i].className.replace(‘main_i_active’,”);

clear_ctrl[i].className = clear_ctrl[i].className.replace(‘ctrl_i_active’,”);

}

// 5.4为当前控制按钮和幻灯片附加样式

g(“main_”+n).className += ‘ main_i_active’;

g(“ctrl_”+n).className += ‘ ctrl_i_active’;

// 7.2切换时 复制上一张幻灯片到main_background中

setTimeout(function(){

g(‘main_background’).innerHTML = main.innerHTML;

},1000);

}

// 6、动态调整图片的margin-top 使其垂直居中

function movePictures(){

var pictures = g(‘.picture’);

for(i=0;i

pictures[i].style.marginTop = -(pictures[i].clientHeight/3) + ‘px’;

}

}

// 4、定义何时处理幻灯片输出

window.onload = function(){

addSliders();

switchSliders(1);

setTimeout(function(){

movePictures();

},100)

}

效果图 … = =莫吐槽又是这几张图~~~

9e8a08933376f4106c58dc88fec17230.png

遇到问题:

1、 给图片直接加top:50%;会有BUG,没作用,原因可能是没给height固定高度~~给了固定高度就好了

但问题又来了,2、给固定高度后,按钮组不能自适应宽度 … 会被挤到第二排去  ……

以上这篇【JS+CSS3】实现带预览图幻灯片效果的示例代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/158581.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月13日 上午9:46
下一篇 2022年7月13日 上午9:46


相关推荐

  • win7计算机打印机共享怎么设置密码,Win7打印机共享设置密码的方法

    win7计算机打印机共享怎么设置密码,Win7打印机共享设置密码的方法我们在使用打印机的时候 需要开启打印机共享功能 才可以供大家使用 如有设置密码的要取消密码 这样对方才可以使用这台打印机 最近 有 Win7 系统的用户 在使用打印机连接的时候 出现需要密码才可以使用 明明没有设置密码 怎么会要输入密码呢 怎么办 那要如何解决这样的问题呢 下面小编就和大家分享一下 Win7 打印机共享设置密码的方法 方法 步骤 1 开始运行 在里面输入 gpedit msc 然后

    2026年3月26日
    2
  • 开源嵌入新王落地!Qwen3-Embedding 本地部署指南 + Dify 召回测试实录

    开源嵌入新王落地!Qwen3-Embedding 本地部署指南 + Dify 召回测试实录

    2026年3月12日
    9
  • 什么是大数据开发?「建议收藏」

    什么是大数据开发?「建议收藏」♥️大数据开发是干什么的?大数据作为时下火热的IT行业的词汇,随之而来的数据开发、数据仓库、数据安全、数据分析、数据挖掘等等围绕大数据的商业价值的利用逐渐成为行业人士争相追捧的利润焦点。随着大数据时代的来临,大数据开发也应运而生。大数据开发其实分两种,第一类是编写一些Hadoop、Spark的应用程序,第二类是对大数据处理系统本身进行开发。第一类工作感觉更适用于dataanalyst这种…

    2022年5月4日
    128
  • idea卸载教程

    idea卸载教程idea 卸载教程

    2026年3月19日
    3
  • 协同过滤推荐算法介绍(协同过滤的推荐算法)

    随着电商企业的发展,为了更好的了解用户喜好以便于将更加适合的商品推荐给用户,不仅能得到用户好的评价,而且也有利于自身企业的利益,因此,随之诞生了很多推荐系统,最为常用的推荐算法就是协同过滤算法。转载请标明原文链接推荐算法的基础就是基于两个对象之间的相关性,常用的计算方法有欧几里得相似性,这是一种使用较多的相似性计算方法。除此之外还有曼哈顿相似性和余弦相似性的计算方法。协同过滤算…

    2022年4月10日
    48
  • Android Studio gardle 配置 ndk 指定 ABI: abiFilters 详解

    Android Studio gardle 配置 ndk 指定 ABI: abiFilters 详解一、ABI是什么ABI是ApplicationBinaryInterface的缩写。不同Android手机使用不同的CPU,因此支持不同的指令集。CPU与指令集的每种组合都有其自己的应用二进制界面(或ABI)。ABI可以非常精确地定义应用的机器代码在运行时如何与系统交互。您必须为应用要使用的每个CPU架构指定ABI。典型的ABI包含以下信息:机…

    2022年5月11日
    267

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号