DIV,CSS如何实现“加减号”“显示隐藏”效果

html-css017

DIV,CSS如何实现“加减号”“显示隐藏”效果,第1张

<script type="text/javascript" src="js/jq.js"></script><!--这里要引入jQuery库-->

<script type="text/javascript">

$(function(){

    $(".icon").click(function(){

        if($(this).html()=="+"){

        $(this).html("-")

        }

        else{

            $(this).html("+")

        }

        $(".content p").toggle(100)

    })

})

</script>

<style type="text/css">

*{margin:0padding:0font:12px/16px 宋体}

.divcon{width:300pxdisplay:inline-tablepadding:10pxborder:1px solid #CCC}

.divcon div{float:left}

.icon{width:20pxheight:20pxborder:1px solid #666text-align:centerline-height:20pxcursor:pointer}

.content{width:270pxpadding-left:5px}

.content p{color:#999display:none}

</style>

<div class="divcon">

<div class="icon">+</div>

    <div class="content">

     这里是文字哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦……

     <p>隐藏的文字隐藏的文字隐藏的文字隐藏的文字隐藏的文字隐藏的文字</p>

    </div>

</div>

加号和减号其实是一个触发按钮事件,写一个加function点加号的时候获取输入框中的值+1,写一个减function点减号的时候获取输入框中的值-1。

附加代码如下,你试试

<input id="min" name="" type="button" value="-" />

<input id="text_box" name="goodnum" type="text" value="${item.value.quantity }" style="width:25px" />

<input id="add" name="" type="button" value="+" /></td>

<script>

$(function(){

var t = $("#text_box")

$("#add").click(function(){

t.val(parseInt(t.val())+1)

setTotal()

})

$("#min").click(function(){

t.val(parseInt(t.val())-1)

setTotal()

})

function setTotal(){

var tt = $("#text_box").val()

var pbinfoid=$("#pbinfoid").val()

if(tt<=0){

alert('输入的值错误!')

t.val(parseInt(t.val())+1)

}else{

window.location.href = "shopping!updateMyCart.action?pbinfoid="+pbinfoid+"&number="+tt

}

}

})

</script>

“_”是CSS hack 类内属性前缀法中的一种,是IE6专属的hack。下面详细说一下CSS hack。

CSS hack由于不同厂商的浏览器,比如Internet Explorer,Safari,Mozilla Firefox,Chrome等,或者是同一厂商的浏览器的不同版本,如IE6和IE7,对CSS的解析认识不完全一样,因此会导致生成的页面效果不一样,得不到我们所需要的页面效果。 这个时候我们就需要针对不同的浏览器去写不同的CSS,让它能够同时兼容不同的浏览器,能在不同的浏览器中也能得到我们想要的页面效果。

简单的说,CSS hack的目的就是使你的CSS代码兼容不同的浏览器。当然,我们也可以反过来利用CSS hack为不同版本的浏览器定制编写不同的CSS效果。

1.原理

由于不同的浏览器对CSS的支持及解析结果不一样,还由于CSS中的优先级的关系。我们就可以根据这个来针对不同的浏览器来写不同的CSS。

 

 CSS Hack大致有3种表现形式,CSS类内部Hack、选择器Hack以及HTML头部引用(if IE)Hack,CSS Hack主要针对类内部Hack:比如 IE6能识别下划线"_"和星号" * ",IE7能识别星号" * ",但不能识别下划线"_",而firefox两个都不能认识。等等

选择器Hack:比如 IE6能识别*html .class{},IE7能识别*+html .class{}或者*:first-child+html .class{}。等等

HTML头部引用(if IE)Hack:

针对所有IE:<!--[if IE]><!--您的代码--><![endif]-->,

针对IE6及以下版本:<!--[if lt IE 7]><!--您的代码--><![endif]-->

这类Hack不仅对CSS生效,对写在判断语句里面的所有代码都会生效。

书写顺序,一般是将识别能力强的浏览器的CSS写在后面。下面如何写里面说得更详细些。

2、常用的CSS hack方式

(1)方式一 条件注释法

只在IE下生效

<!--[if IE]>

这段文字只在IE浏览器显示

<![endif]-->

只在IE6下生效

<!--[if IE 6]>

这段文字只在IE6浏览器显示

<![endif]-->

只在IE6以上版本生效

<!--[if gte IE 6]>

这段文字只在IE6以上(包括)版本IE浏览器显示

<![endif]-->

只在IE8上不生效

<!--[if ! IE 8]>

这段文字在非IE8浏览器显示

<![endif]-->

非IE浏览器生效

<!--[if !IE]>

这段文字只在非IE浏览器显示

<![endif]-->

(2)方式二 类内属性前缀法

属性前缀法是在CSS样式属性名前加上一些只有特定浏览器才能识别的hack前缀,以达到预期的页面展现效果。

IE浏览器各版本 CSS hack 对照表

说明:在标准模式中

“-″减号是IE6专有的hack

“\9″ IE6/IE7/IE8/IE9/IE10都生效

“\0″ IE8/IE9/IE10都生效,是IE8/9/10的hack

“\9\0″ 只对IE9/IE10生效,是IE9/10的hack

(3)CSS hack方式三:选择器前缀法

选择器前缀法是针对一些页面表现不一致或者需要特殊对待的浏览器,在CSS选择器前加上一些只有某些特定浏览器才能识别的前缀进行hack。

目前最常见的是

*html *前缀只对IE6生效*+html *+前缀只对IE7生效

@media screen\9{...}只对IE6/7生效

@media \0screen {body { background: red}}只对IE8有效

@media \0screen\,screen\9{body { background: blue}}只对IE6/7/8有效

@media screen\0 {body { background: green}} 只对IE8/9/10有效

@media screen and (min-width:0\0) {body { background: gray}} 只对IE9/10有效

@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {body { background: orange}} 只对IE10有效等等

3、实际应用

比如要分辨IE6和firefox两种浏览器,可以这样写:

div{

background:green/*forfirefox*/

*background:red/*forIE6*/(bothIE6&&IE7)

}

我在IE6中看到是红色的,在firefox中看到是绿色的。

解释一下:

上面的css在firefox中,它是认识不了后面的那个带星号的东西是什么的,于是将它过滤掉,不予理睬,解析得到的结果是:div{background:green},于是理所当然这个div的背景是绿色的。

在IE6中呢,它两个background都能识别出来,它解析得到的结果是:div{background:green*background:red},于是根据优先级别,处在后面的red的优先级高,于是当然这个div的背景颜色就是红色的了。