Javascript 如何顺利打开div

Javascript 如何顺利打开div,javascript,jquery,Javascript,Jquery,请帮助我如何顺利打开div。我已经添加了脚本和html代码,它工作得很好,但是div突然打开了。我想顺利地打开我的div“#mapsec” function showhide() { var div = document.getElementById("mapsec"); if (div.style.display !== "none") { div.style.display = "none"; } else { div.styl

请帮助我如何顺利打开div。我已经添加了脚本和html代码,它工作得很好,但是div突然打开了。我想顺利地打开我的div“#mapsec”

function showhide() {
    var div = document.getElementById("mapsec");
    if (div.style.display !== "none") {
        div.style.display = "none";
    }
    else {
        div.style.display = "block";

    }
}
HTML代码
访问我们(地图)

使用
display
完全按照它所说的做:
显示
隐藏
元素。您可以使用jQuerys
hide
show
函数,但由于您尝试使用标准javascript,我将为您提供另一种解决方案:

<div id="mapsec">
<!-- Your Contents -->
</div>
现在,javascript:

function showhide(){
    var div = document.getElementById("mapsec");
    if (div.className === "") {
        div.className = "active";
    } else {
        div.className = "";
    }
}
<div id="mapsec" class="hidden">
<!-- Your Contents -->
</div>

.hidden { 
    max-height: 0; 
    overflow: hidden; 
    transition: max-height 500ms;
}
.hidden.active {
    max-height: 1000px;
}

function showhide(id){
    var div = document.getElementById(id);
    if (div.className === "hidden") {
        div.className = "hidden  active";
    } else {
        div.className = "hidden";
    }
}
我们使用的是CSS3的内置动画来触发看起来更平滑的东西。我们隐藏要设置动画的框的
溢出
,因为您希望它不可见。然后我们还将其
max height
设置为
0
,因此它看起来没有任何
height
(我想补充一点,这里不包括任何
填充
边距
,可能还需要重置)

现在,我们只需将
active
类添加到div中即可为其设置动画

以下是CSS和javascript的改进、更通用和可重用版本:

function showhide(){
    var div = document.getElementById("mapsec");
    if (div.className === "") {
        div.className = "active";
    } else {
        div.className = "";
    }
}
<div id="mapsec" class="hidden">
<!-- Your Contents -->
</div>

.hidden { 
    max-height: 0; 
    overflow: hidden; 
    transition: max-height 500ms;
}
.hidden.active {
    max-height: 1000px;
}

function showhide(id){
    var div = document.getElementById(id);
    if (div.className === "hidden") {
        div.className = "hidden  active";
    } else {
        div.className = "hidden";
    }
}
现在,
toggleClass
将添加
active
类并将其自身删除!这更好,因为当您使用多个类时,jQuery将保持它们不变(请注意,我们实际上不再需要在此代码中使用
隐藏的
?只要它已经隐藏了
,我们就可以不使用它。)

函数显示隐藏(id){
var div=document.getElementById(id);
如果(div.className==“隐藏”){
div.className=“隐藏活动”;
}否则{
div.className=“隐藏”;
}
}
.hidden{
最大高度:0;
溢出:隐藏;
/*您应该为以下内容添加前缀:*/
过渡段:最大高度500ms;
}
.hidden.active{
最大高度:1000px;
}

使用
display
完全按照它所说的做:
显示
隐藏
元素。您可以使用jQuerys
hide
show
函数,但由于您尝试使用标准javascript,我将为您提供另一种解决方案:

<div id="mapsec">
<!-- Your Contents -->
</div>
现在,javascript:

function showhide(){
    var div = document.getElementById("mapsec");
    if (div.className === "") {
        div.className = "active";
    } else {
        div.className = "";
    }
}
<div id="mapsec" class="hidden">
<!-- Your Contents -->
</div>

.hidden { 
    max-height: 0; 
    overflow: hidden; 
    transition: max-height 500ms;
}
.hidden.active {
    max-height: 1000px;
}

function showhide(id){
    var div = document.getElementById(id);
    if (div.className === "hidden") {
        div.className = "hidden  active";
    } else {
        div.className = "hidden";
    }
}
我们使用的是CSS3的内置动画来触发看起来更平滑的东西。我们隐藏要设置动画的框的
溢出
,因为您希望它不可见。然后我们还将其
max height
设置为
0
,因此它看起来没有任何
height
(我想补充一点,这里不包括任何
填充
边距
,可能还需要重置)

现在,我们只需将
active
类添加到div中即可为其设置动画

以下是CSS和javascript的改进、更通用和可重用版本:

function showhide(){
    var div = document.getElementById("mapsec");
    if (div.className === "") {
        div.className = "active";
    } else {
        div.className = "";
    }
}
<div id="mapsec" class="hidden">
<!-- Your Contents -->
</div>

.hidden { 
    max-height: 0; 
    overflow: hidden; 
    transition: max-height 500ms;
}
.hidden.active {
    max-height: 1000px;
}

function showhide(id){
    var div = document.getElementById(id);
    if (div.className === "hidden") {
        div.className = "hidden  active";
    } else {
        div.className = "hidden";
    }
}
现在,
toggleClass
将添加
active
类并将其自身删除!这更好,因为当您使用多个类时,jQuery将保持它们不变(请注意,我们实际上不再需要在此代码中使用
隐藏的
?只要它已经隐藏了
,我们就可以不使用它。)

函数显示隐藏(id){
var div=document.getElementById(id);
如果(div.className==“隐藏”){
div.className=“隐藏活动”;
}否则{
div.className=“隐藏”;
}
}
.hidden{
最大高度:0;
溢出:隐藏;
/*您应该为以下内容添加前缀:*/
过渡段:最大高度500ms;
}
.hidden.active{
最大高度:1000px;
}

这将很好地简化div,而不是:

div.style.display = "block";
这将很好地简化div,而不是:

div.style.display = "block";
使用:

使用:


使用jQuery有几种方法。例如:

function showhide() {

    $('#mapsec').slideToggle(200);
}
这将滑动div打开或关闭。200是动画的速度(以毫秒为单位)

看看这些:

  • $('#mapsec')。切换(200)-
  • $(“#映射秒”)。滑动切换(200)-
  • $('#mapsec')。fadeToggle(200)-

  • 使用jQuery有几种方法。例如:

    function showhide() {
    
        $('#mapsec').slideToggle(200);
    }
    
    这将滑动div打开或关闭。200是动画的速度(以毫秒为单位)

    看看这些:

  • $('#mapsec')。切换(200)-
  • $(“#映射秒”)。滑动切换(200)-
  • $('#mapsec')。fadeToggle(200)-
  • 我基本上同意,但是因为你在里面设置了一个有图像的div动画,所以我会设置div高度的动画,并将图像高度设置为100%。我觉得这样看起来更好/更平滑。JS更改类来自,但CSS是:

    #mapsec {
        height: 0;
        overflow: hidden;
        -webkit-transition: height 500ms;
        transition: height 500ms;
    }
    #mapsec.active {
        height: 200px;
    }
    #mapsec img {
        height: 100%;
        width: 100%;
    }
    
    我基本上同意,但是因为你在里面设置了一个有图像的div动画,所以我会设置div高度的动画,并将图像高度设置为100%。我觉得这样看起来更好/更平滑。JS更改类来自,但CSS是:

    #mapsec {
        height: 0;
        overflow: hidden;
        -webkit-transition: height 500ms;
        transition: height 500ms;
    }
    #mapsec.active {
        height: 200px;
    }
    #mapsec img {
        height: 100%;
        width: 100%;
    }
    

    使用css3转换而不是jQuery/Javascript动画使用css3转换而不是jQuery/Javascript动画此解决方案不如硬编码div的高度。在我的解决方案中使用
    max height
    like将允许div缩放到其预期大小(只要其高度小于2000px),这意味着您可以轻松地重用代码。现在,我承认2000px可能有点大(所以动画看起来几乎是瞬间的),但它确实可以工作并且是可伸缩的。你是100%对的。特别是在他的情况下,我会为了美丽而牺牲普遍性。没错,但唯一的问题是,如果这个网站能够响应,图像的高度可能会随着宽度的变化而变化。我发现如果盒子底部没有一堆空白,因为高度是硬编码的,那就更漂亮了。但那只是我。我同意,请不要误解我的意思。您可以看到基于图像比率的响应版本。此解决方案不如您硬编码div的高度。在我的解决方案中使用类似的
    max height
    将允许div