使用DIV+CSS如何实现幻灯片的效果?

html-css08

使用DIV+CSS如何实现幻灯片的效果?,第1张

CSS+DIV是网站标准(或称“WEB标准”)中常用的术语之一,通常为了说明与HTML网页设计语言中的表格(table)定位方式的区别,因为XHTML网站设计标准中,不再使用表格定位技术,而是采用css+div的方式实现各种定位。

CSS是英语Cascading Style Sheets(层叠样式表单)的缩写,它是一种用来表现 HTML 或 XML 等文件式样的计算机语言。

DIV元素是用来为HTML文档内大块(block-level)的内容提供结构和背景的元素。DIV的起始标签和结束标签之间的所有内容都是用来构成这个块的,其中所包含元素的特性由DIV标签的属性来控制,或者是通过使用样式表格式化这个块来进行控制。

<div id="mContainer"></div>

<input class="btn" id="pauseBtn" onclick="doPause()" type="button" value="pause" />

建立一个层,设置id为mContainer,作为图片的容器层。

设置一个按钮来控制图片切换的暂停与继续。

我们看下面的CSS代码:

#mContainer {

width:225px

position:relative

height:168px

}

.mPhoto {

filter:Alpha(opacity=0)

left:0px

position:absolute

top:0px

moz-opacity:0.0

}

.btn {

border-right:#000 1px solid

border-top:#000 1px solid

margin-top:5px

font-size:9px

border-left:#000 1px solid

width:40px

border-bottom:#000 1px solid

font-family:verdana

}

这些代码我们都能看明白,需要指出的是类mPhoto的样式定义。

主要是应用了滤镜将图片的透明度设置为零,完全透明。

我们看下面的javascript脚本:

var currentPhoto = 0

var secondPhoto = 1

var currentOpacity = new Array()

var imageArray = new Array("1.jpg","2.jpg","3.jpg","4.jpg","5.jpg","6.jpg","7.jpg","8.jpg")

var FADE_STEP = 2

var FADE_INTERVAL = 10

var pause = false

function init() {

currentOpacity[0]=99

for(i=1i<imageArray.lengthi++)currentOpacity[i]=0

mHTML=""

for(i=0i<imageArray.lengthi++)mHTML+="<div id=\"photo\" name=\"photo\" class=\"mPhoto\"><img src=\"" + imageArray[i] +"\"></div>"

document.getElementById("mContainer").innerHTML = mHTML

if(document.all) {

document.getElementsByName("photo")[currentPhoto].style.filter="alpha(opacity=100)"

} else {

document.getElementsByName("photo")[currentPhoto].style.MozOpacity = .99

}

mInterval = setInterval("crossFade()",FADE_INTERVAL)

}

function crossFade() {

if(pause)return

currentOpacity[currentPhoto]-=FADE_STEP

currentOpacity[secondPhoto] += FADE_STEP

if(document.all) {

document.getElementsByName("photo")[currentPhoto].style.filter = "alpha(opacity=" + currentOpacity[currentPhoto] + ")"

document.getElementsByName("photo")[secondPhoto].style.filter = "alpha(opacity=" + currentOpacity[secondPhoto] + ")"

} else {

document.getElementsByName("photo")[currentPhoto].style.MozOpacity = currentOpacity[currentPhoto]/100

document.getElementsByName("photo")[secondPhoto].style.MozOpacity =currentOpacity[secondPhoto]/100

}

if(currentOpacity[secondPhoto]/100>=.98) {

currentPhoto = secondPhoto

secondPhoto++

if(secondPhoto == imageArray.length)secondPhoto=0

pause = true

xInterval = setTimeout("pause=false",2000)

}

}

function doPause() {

if(pause) {

pause = false

document.getElementById("pauseBtn").value = "pause"

div css这样说,其实不对,因为div只是一个标签,而,整个网页又不一定只是div,也会有h1之类的标题标签,也会有p之类的段落标签,简单理解,html就相当于房子的框架,框架搭好了,但是房子还没有装修,就需要用用css,别入一些背景啊,边框,字体大小颜色啊,之类的,如果想让房子非常现代化,而且,又自动化,用起来又方便,就需要用到js,比如说tab切换啊,幻灯片啊,下拉菜单之流,如此,还有什么不明白的,请追问

那可以用隐藏层来解决吖

例如

<style type="text/css">

body{ margin:0text-align:centerbackground-color:#000000font-size:12px}

#wrapper{ width:700pxbackground-color:#fffmargin:0 autoheight:300pxposition:relative}

#news1,#news2{ border:1px solid blackwidth:500pxmargin:10pxline-height:20pxpadding:10pxtext-align:left}

#news2{ display:none}

#news1 img,#news2 img{ float:leftmargin:3pxborder:1px solid #666padding:5px}

#news1 ul,#news2 ul{ margin:0padding:0height:24pxbackground:url(images/titlebg.gif) repeat-xlist-style:none}

#news1 ul li,#news2 ul li{ float:leftwidth:62pxheight:24pxtext-align:centerfont-weight:600cursor:pointermargin:0padding:0}

.tab1{ background:url(images/tabbg1.gif) no-repeat}

.tab2{ background:url(images/tabbg2.gif) no-repeatcolor:#fff}

.content{ border-left:1px solid #cccborder-bottom:1px solid #cccborder-right:1px solid #cccpadding:10pxheight:180px}

</style>

<script language="JavaScript">

function changeTab(elementId1,elementId2,no)

{

if(no==1)

{

document.getElementById(elementId1).style.display="block"

document.getElementById(elementId2).style.display="none"

}

else

{

document.getElementById(elementId1).style.display="none"

document.getElementById(elementId2).style.display="block"

}

}

</script>

<body>

<div id="wrapper">

<div id="news1">

<ul>

<li class="tab1">篮球</li>

<li class="tab2" onMouseOver="changeTab('news1','news2',2)">足球</li>

</ul>

<div class="content">

<p>新浪体育讯 北京时间6月3日,东部决赛将在克里夫兰进行第六场决战。目前,小皇帝詹姆斯领军的骑士以3-2的总比分领先东部头号种子活塞。值得一提的是,活塞是在先赢两场之后又连着输了三场,被骑士率先拿到赛点,形势极为不妙。活塞肯定将力争把比赛带回底特律,而骑士则要借着上一场比赛的冲劲,一鼓作气,在主场闯进总决赛。</p>

<p>对于活塞来说,今天传来的好消息可以让他们松一扣气,因为麦克代斯可以不用因为上一场比赛中对骑士瓦莱乔的恶意犯规而停赛。这样,这位活塞阵中经验丰富的替补老将将在明天的比赛中重新发挥自己的威力,为活塞的板凳厚度以及防守强度做出贡献。</p>

</div>

</div>

<div id="news2">

<ul>

<li class="tab2" onMouseOver="changeTab('news1','news2',1)">篮球</li>

<li class="tab1">足球</li>

</ul>

<div class="content">

<p><img src="images/football.jpg">英格兰与巴西的热身赛在新温布利球场展开角逐,最终三狮军团主场1比1战平对手。下半时,英格兰新老队长打出配合,重返国家队的贝克汉姆精准任意球助攻特里得分,巴西替补迭戈终场前追平比分。英格兰队在新温布利首次亮相,88745名球迷到场助威,不过由于上个月暴雨和三个级别联赛升级附加赛的摧残,草皮状况并不理想。贝克汉姆被放逐335天后重返国家队,第95次为英格兰出战,上次出场是去年7月1日世界杯8强赛负于葡萄牙。队长袖标仍戴在特里手臂上。

</p>

</div>

</div>

</div>

</body>

ps:背景图片的路径你自己修改修改咯