CSS如何显示一个从左上角开始展开的弹窗,最终是显示在屏幕中间,思路是什么,请大神指导下。

html-css012

CSS如何显示一个从左上角开始展开的弹窗,最终是显示在屏幕中间,思路是什么,请大神指导下。,第1张

思路应该是一个从0%到100%的动画展开的效果,大概需要写0%,50%,100%三个样式。 弹窗的css代码大概是:position: fixedz-index: 2000left: 0top: 0这样弹窗的左上角原点在页面最左上角,如果要调整位置要用CSS变换特效(transform)的平移translate函数达到目的: translate(x, y)(长度值或者百分比):在水平方向、垂直方向平移元素。    translateX(value):水平方向平移。    translateY(value):垂直方向平移。    scale(x, y)、scaleX(value)、scaleY(value):在水平方向、垂直方向或者两个方向上缩放元素。    rotate()、rotateX()、rotateY()、rotateZ():rotate支持3D效果,可在x、y、z轴上旋转元素。    skew()、skewX()、skewY():在水平方向、垂直方向或者两个方向倾斜一定的角度。  另外弹窗展开的动画要用到css3的动画属性:    animation-delay:设置动画开始前的延迟时间。    animation-direction:设置动画循环播放的时候是否方向播放,包含normal和alternate两个值。    animation-duration:设置动画播放持续的时间。    animation-interacion-count:设置动画的播放次数,可以为具体数据或者无限循环关键字infinite。    animation-name:指定动画名称。    animation-play-state:允许动画暂停和重新播放,包含running、paused。    animation-timing-function:指定如何计算中间动画值,

<html>

<head>

<meta http-equiv="Content-Type" content="text/htmlcharset=gb2312">

<title>页面内的超级酷浮动窗口</title>

<style type='text/css'>

<!--

a:visited{text-decoration:nonecolor:slategray}

a:hover{text-decoration:underlinecolor:slategray}

a:link{text-decoration:nonecolor:slategray}

-->

</style>

<script language=JScript>

<!--

//可以打包为js文件

var x0=0,y0=0,x1=0,y1=0

var offx=6,offy=6

var moveable=false

var hover='orange',normal='slategray'//color

var index=10000//z-index

//开始拖动

function startDrag(obj)

{

if(event.button==1)

{

//锁定标题栏

obj.setCapture()

//定义对象

var win = obj.parentNode

var sha = win.nextSibling

//记录鼠标和层位置

x0 = event.clientX

y0 = event.clientY

x1 = parseInt(win.style.left)

y1 = parseInt(win.style.top)

//记录颜色

normal = obj.style.backgroundColor

//改变风格

obj.style.backgroundColor = hover

win.style.borderColor = hover

obj.nextSibling.style.color = hover

sha.style.left = x1 + offx

sha.style.top = y1 + offy

moveable = true

}

}

//拖动

function drag(obj)

{

if(moveable)

{

var win = obj.parentNode

var sha = win.nextSibling

win.style.left = x1 + event.clientX - x0

win.style.top = y1 + event.clientY - y0

sha.style.left = parseInt(win.style.left) + offx

sha.style.top = parseInt(win.style.top) + offy

}

}

//停止拖动

function stopDrag(obj)

{

if(moveable)

{

var win = obj.parentNode

var sha = win.nextSibling

var msg = obj.nextSibling

win.style.borderColor = normal

obj.style.backgroundColor = normal

msg.style.color = normal

sha.style.left = obj.parentNode.style.left

sha.style.top = obj.parentNode.style.top

obj.releaseCapture()

moveable = false

}

}

//获得焦点

function getFocus(obj)

{

if(obj.style.zIndex!=index)

{

index = index + 2

var idx = index

obj.style.zIndex=idx

obj.nextSibling.style.zIndex=idx-1

}

}

//最小化

function min(obj)

{

var win = obj.parentNode.parentNode

var sha = win.nextSibling

var tit = obj.parentNode

var msg = tit.nextSibling

var flg = msg.style.display=="none"

if(flg)

{

win.style.height = parseInt(msg.style.height) + parseInt(tit.style.height) + 2*2

sha.style.height = win.style.height

msg.style.display = "block"

obj.innerHTML = "0"

}

else

{

win.style.height = parseInt(tit.style.height) + 2*2

sha.style.height = win.style.height

obj.innerHTML = "2"

msg.style.display = "none"

}

}

//关闭

function cls(obj)

{

var win = obj.parentNode.parentNode

var sha = win.nextSibling

win.style.visibility = "hidden"

sha.style.visibility = "hidden"

}

//创建一个对象

function xWin(id,w,h,l,t,tit,msg)

{

index = index+2

this.id = id

this.width = w

this.height = h

this.left= l

this.top = t

this.zIndex = index

this.title = tit

this.message = msg

this.obj = null

this.bulid = bulid

this.bulid()

}

//初始化

function bulid()

{

var str = ""

+ "<div id=xMsg" + this.id + " "

+ "style='"

+ "z-index:" + this.zIndex + ""

+ "width:" + this.width + ""

+ "height:" + this.height + ""

+ "left:" + this.left + ""

+ "top:" + this.top + ""

+ "background-color:" + normal + ""

+ "color:" + normal + ""

+ "font-size:10px"

+ "font-family:Verdana"

+ "position:absolute"

+ "cursor:default"

+ "border:2px solid " + normal + ""

+ "' "

+ "onmousedown='getFocus(this)'>"

+ "<div "

+ "style='"

+ "background-color:" + normal + ""

+ "width:" + (this.width-2*2) + ""

+ "height:20"

+ "color:white"

+ "' "

+ "onmousedown='startDrag(this)' "

+ "onmouseup='stopDrag(this)' "

+ "onmousemove='drag(this)' "

+ "ondblclick='min(this.childNodes[1])'"

+ ">"

+ "<span style='width:" + (this.width-2*12-4) + "padding-left:3px'>" + this.title + "</span>"

+ "<span style='width:12border-width:0pxcolor:whitefont-family:webdings' onclick='min(this)'>0</span>"

+ "<span style='width:12border-width:0pxcolor:whitefont-family:webdings' onclick='cls(this)'>r</span>"

+ "</div>"

+ "<div style='"

+ "width:100%"

+ "height:" + (this.height-20-4) + ""

+ "background-color:white"

+ "line-height:14px"

+ "word-break:break-all"

+ "padding:3px"

+ "'>" + this.message + "</div>"

+ "</div>"

+ "<div style='"

+ "width:" + this.width + ""

+ "height:" + this.height + ""

+ "top:" + this.top + ""

+ "left:" + this.left + ""

+ "z-index:" + (this.zIndex-1) + ""

+ "position:absolute"

+ "background-color:black"

+ "filter:alpha(opacity=40)"

+ "'>by wildwind</div>"

document.body.insertAdjacentHTML("beforeEnd",str)

}

//-->

</script>

<script language='JScript'>

<!--

function initialize()

{

var a = new xWin("1",160,200,200,200,"Message","xWin <br>A Cool Pop Div Window<br>Version:1.0<br>2002-8-13")

var b = new xWin("2",240,200,100,100,"Wildwind's Msgbox","Welcome to visited my personal website:<br><a href=http://www14.brinkster.com/wildcity target=_blank>http://wildcity.126.com</a><br>and u can also sign my guestbook at:<br><a href=http://www14.brinkster.com/wildcity/gbook target=_blank>http://wildcity.126.com/gbook</a><br><br>thx!!! =)...")

var c = new xWin("3",200,160,250,50,"Copyright","Copyright by <a href='mailto:[email protected]'>Wildwind</a>!")

}

window.onload = initialize

//-->

</script>

</head>

<body onselectstart='return false' oncontextmenu='return false' scroll='no'>

</body>

</html>

或者

<html>

<head>

<title>用层模拟的小窗口(可拖动展合)</title>

<meta http-equiv="Content-Type" content="text/htmlcharset=gb2312">

<style type='text/css'>

<!--

body{font-size:12px}

a:visited{text-decoration:nonecolor:slategray}

a:hover{text-decoration:underlinecolor:slategray}

a:link{text-decoration:nonecolor:slategray}

-->

</style>

<script language=JScript>

<!--

//可以打包为js文件

var x0=0,y0=0,x1=0,y1=0

var offx=6,offy=6

var moveable=false

var hover='orange',normal='#336699'//color

var index=10000//z-index

//开始拖动

function startDrag(obj)

{

if(event.button==1)

{

//锁定标题栏

obj.setCapture()

//定义对象

var win = obj.parentNode

var sha = win.nextSibling

//记录鼠标和层位置

x0 = event.clientX

y0 = event.clientY

x1 = parseInt(win.style.left)

y1 = parseInt(win.style.top)

//记录颜色

normal = obj.style.backgroundColor

//改变风格

obj.style.backgroundColor = hover

win.style.borderColor = hover

obj.nextSibling.style.color = hover

sha.style.left = x1 + offx

sha.style.top = y1 + offy

moveable = true

}

}

//拖动

function drag(obj)

{

if(moveable)

{

var win = obj.parentNode

var sha = win.nextSibling

win.style.left = x1 + event.clientX - x0

win.style.top = y1 + event.clientY - y0

sha.style.left = parseInt(win.style.left) + offx

sha.style.top = parseInt(win.style.top) + offy

}

}

//停止拖动

function stopDrag(obj)

{

if(moveable)

{

var win = obj.parentNode

var sha = win.nextSibling

var msg = obj.nextSibling

win.style.borderColor = normal

obj.style.backgroundColor = normal

msg.style.color = normal

sha.style.left = obj.parentNode.style.left

sha.style.top = obj.parentNode.style.top

obj.releaseCapture()

moveable = false

}

}

//获得焦点

function getFocus(obj)

{

if(obj.style.zIndex!=index)

{

index = index + 2

var idx = index

obj.style.zIndex=idx

obj.nextSibling.style.zIndex=idx-1

}

}

//最小化

function min(obj)

{

var win = obj.parentNode.parentNode

var sha = win.nextSibling

var tit = obj.parentNode

var msg = tit.nextSibling

var flg = msg.style.display=="none"

if(flg)

{

win.style.height = parseInt(msg.style.height) + parseInt(tit.style.height) + 2*2

sha.style.height = win.style.height

msg.style.display = "block"

obj.innerHTML = "0"

}

else

{

win.style.height = parseInt(tit.style.height) + 2*2

sha.style.height = win.style.height

obj.innerHTML = "2"

msg.style.display = "none"

}

}

//创建一个对象

function xWin(id,w,h,l,t,tit,msg)

{

index = index+2

this.id = id

this.width = w

this.height = h

this.left= l

this.top = t

this.zIndex = index

this.title = tit

this.message = msg

this.obj = null

this.bulid = bulid

this.bulid()

}

//初始化

function bulid()

{

var str = ""

+ "<div id=xMsg" + this.id + " "

+ "style='"

+ "z-index:" + this.zIndex + ""

+ "width:" + this.width + ""

+ "height:" + this.height + ""

+ "left:" + this.left + ""

+ "top:" + this.top + ""

+ "background-color:" + normal + ""

+ "color:" + normal + ""

+ "font-size:8pt"

+ "font-family:Tahoma"

+ "position:absolute"

+ "cursor:default"

+ "border:2px solid " + normal + ""

+ "' "

+ "onmousedown='getFocus(this)'>"

+ "<div "

+ "style='"

+ "background-color:" + normal + ""

+ "width:" + (this.width-2*2) + ""

+ "height:20"

+ "color:white"

+ "' "

+ "onmousedown='startDrag(this)' "

+ "onmouseup='stopDrag(this)' "

+ "onmousemove='drag(this)' "

+ "ondblclick='min(this.childNodes[1])'"

+ ">"

+ "<span style='width:" + (this.width-2*12-4) + "padding-left:3px'>" + this.title + "</span>"

+ "<span style='width:12border-width:0pxcolor:whitefont-family:webdings' onclick='min(this)'>0</span>"

+ "<span style='width:12border-width:0pxcolor:whitefont-family:webdings' onclick='ShowHide(\""+this.id+"\",null)'>r</span>"

+ "</div>"

+ "<div style='"

+ "width:100%"

+ "height:" + (this.height-20-4) + ""

+ "background-color:white"

+ "line-height:14px"

+ "word-break:break-all"

+ "padding:3px"

+ "'>" + this.message + "</div>"

+ "</div>"

+ "<div id=xMsg" + this.id + "bg style='"

+ "width:" + this.width + ""

+ "height:" + this.height + ""

+ "top:" + this.top + ""

+ "left:" + this.left + ""

+ "z-index:" + (this.zIndex-1) + ""

+ "position:absolute"

+ "background-color:black"

+ "filter:alpha(opacity=40)"

+ "'></div>"

document.body.insertAdjacentHTML("beforeEnd",str)

}

//显示隐藏窗口

function ShowHide(id,dis){

var bdisplay = (dis==null)?((document.getElementById("xMsg"+id).style.display=="")?"none":""):dis

document.getElementById("xMsg"+id).style.display = bdisplay

document.getElementById("xMsg"+id+"bg").style.display = bdisplay

}

//modify by haiwa @ 2005-7-14

//

//-->

</script>

<script language='JScript'>

<!--

function initialize()

{

var a = new xWin("1",160,200,200,200,"窗口1","xWin <br>A Cool Pop Div Window<br>Version:1.0<br>2002-8-13")

ShowHide("1","none")//隐藏窗口1

}

window.onload = initialize

//-->

</script>

</head>

<base target="_blank">

<body onselectstart='return false' oncontextmenu='return false' >

<a onclick="ShowHide('1',null)return false" href="">窗口1</a>

</body>

</html>

一般来说弹出和拉出的菜单都是用JS实现的,因为这属于行为的范畴,CSS只负责外观显示。如果非要用CSS实现的话也可以,做一个链接的伪类

a:hover

然后修改菜单长宽和位置。