繁体   English   中英

打开和关闭固定div

[英]Open and close fixed div

我在页面右侧有一个固定的div,如下所示:

在此处输入图片说明

这是我的html:

<a id="toggle" class="open"><img src="_styles/images/open_close.png" alt="openclose" /></a>
<div class="tweetdetails" style="width: 0px;">
  <p class="screenname">@BachelorGDM</p><br>
  <img src="linktoimage" alt="image_user"><br>
  <p class="createdon">Created on: Mar 8, 2013</p><br>
  <hr>
  <p class="text">Here is some text</p>
</div>

这是我的CSS:

.tweetdetails{
  color:white;
  padding:10px 50px;
  position: fixed;
  right:0px;
  width:300px;
  z-index: 999;
  background-color: #FFF;
  height:100%;
  background-color: black;
      border-left: 5px solid rgb(127,255,255);
}

.open{
    background-repeat: no-repeat;
    background-size: 50px auto;
    color:red;
    position: fixed;
    right:400px;
    top:50%;
}

在我的Javascript中,我有:

$("#toggle").click(function(){
    $(".tweetdetails").animate({width:'0px'}, 500);
    $("#toggle").animate({right: "-=300"}, 500);
})

但是我总是有这样的结果: 在此处输入图片说明

如何确定我什么都看不到了? (我认为这与填充有关...)

检查小提琴是否懒惰;) http://jsfiddle.net/tbleckert/UERHX/

这是因为您的填充会使div的宽度变为300px,而不是300px。 您可以为div添加box-sizing并添加一些额外的宽度,如下所示:

.tweetdetails {
  box-sizing: border-box;
  width: 400px; // Since we added box-sizing
}

框大小将确保div保持您定义的宽度。 然后将切换开关的右边动画化为-400px。 请记住将供应商前缀添加到框大小(-moz和-webkit)中。

但! 问题仍然存在,因此我建议为正确的属性设置动画而不是宽度。 那将起作用。

我建议您将#toggle放在.tweetdetails内,然后将其绝对定位在外面。 这样,您将仅需制作一个动画,因为#toggle将会随之而来。 您也可以仅通过添加类来使用CSS过渡来完成此操作。

.tweetdetails {
  right: -400px;
  transition: 0.5s right; // Add vendor prefixes
}

.tweetdetails.open {
  right: 0;
}

$('#toggle').click(function () {
  $('.tweetdetails').toggleClass('open');
});

我做了一个小提琴,向您展示我的意思: http : //jsfiddle.net/tbleckert/UERHX/

附带说明一下,您不应在CSS中使用ID,而应在JavaScript中使用ID。 将ID添加到您知道将在脚本中使用的元素是一种很好的做法(只是不要发疯,有时会应用多个元素,它们应该是类,以便可以轻松循环)。

您可以使其更加动态,而无需魔术数字:

 $(".tweetdetails").animate({width:'0px' , padding:'0px'}, 500);
 $("#toggle").animate({right: "-=" + ( $(".tweetdetails").outerWidth() ) }, 500);

.outerWidthwidth+padding+border ,请看一下: http : .outerWidth
(编辑,感谢@tbleckert)

我想这就是您想要的: http : //jsfiddle.net/balintbako/XJbqD/

<a id="toggle" class="open"><img src="_styles/images/open_close.png" alt="openclose" /></a>

<div class="tweetdetails" style="width: 0px;">
    <p class="screenname">@BachelorGDM</p>
    <br/>
    <img src="linktoimage" alt="image_user"></img>
    <br/>
    <p class="createdon">Created on: Mar 8, 2013</p>
    <br/>
    <hr/>
    <p class="text">Here is some text</p>
</div>

CSS

.tweetdetails {
    color:white;
    position: fixed;
    right:0px;
    z-index: 999;
    background-color: #FFF;
    height:100%;
    background-color: black;
    border-left: 5px solid rgb(127, 255, 255);
}
.open {
    background-repeat: no-repeat;
    background-size: 50px auto;
    color:red;
    position: fixed;
    right:5px;
    top:50%;
}

JS

$("#toggle").click(function () {
    if ($("#toggle").hasClass("opened")) {
        $(".tweetdetails").animate({
            width: '0px',
            padding: '0px'
        }, 500);
        $("#toggle").animate({
            right: "-=" + 400
        }, 500);
    } else {
        $(".tweetdetails").animate({
            width: '300px',
            padding: '10px 50px'
        }, 500);
        $("#toggle").animate({
            right: "+=" + 400
        }, 500);
    }
    $("#toggle").toggleClass("opened");
});
    $(".tweetdetails").css('padding', '10px 0').animate({width:'0px'}, 500);

打开/关闭一个<div>使用按钮</div><div id="text_translate"><p>我有 3 个不同的 div 和 3 个按钮。 每个按钮打开一个 div,如果打开另一个 div,则必须先关闭第一个 div。 我可以用一些js来做。 我不是程序员,所以我的 js 技能接近于 0。</p><p> 每个按钮都使用 class: .button-1 , .button-2 &amp; .button-3 。 每个 div 都有不同的 ID: #div-1 、 #div-2和#div-3 。</p><p> 这是我正在使用的代码(每个按钮和 div 重复 x3):</p><pre> jQuery(document).ready(function() { // Hide the div jQuery('#div-1').hide(); jQuery('.button-1').click(function(e){ e.preventDefault();jQuery("#div-1").slideToggle('opened closed'); }); }); jQuery(function($){ $('.button-1').click(function(e){ e.preventDefault(); $('#div-2').hide(); $('#div-3').hide(); }); });</pre><p> 它工作正常。 当您打开和关闭同一个 div 时效果是平滑的,但是当您在另一个 div 打开时单击不同的按钮时,两个 div 之间的过渡效果并不平滑。</p><p> 有什么建议吗?<br> 这是<a href="https://jsfiddle.net/MilkyTech/n41pcgb3/29" rel="nofollow noreferrer">jsFiddle</a>中的一个示例。</p><p> 我想问一下,一旦打开其中一个,是否有可能不允许用户关闭.divs</p><p> 提前致谢!</p></div>

[英]Open/close a <div> using buttons

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如果打开,则关闭div;如果关闭,则打开 通过 animation 打开或关闭 div 慢慢打开/关闭div? 将打开一个 div 关闭上一个 JavaScript关闭已打开div 滚动时动态打开和关闭div 关闭当前的div并打开另一个 如果另一个使用引导程序打开,则关闭div Onclick 打开和关闭 div 错误 打开/关闭一个<div>使用按钮</div><div id="text_translate"><p>我有 3 个不同的 div 和 3 个按钮。 每个按钮打开一个 div,如果打开另一个 div,则必须先关闭第一个 div。 我可以用一些js来做。 我不是程序员,所以我的 js 技能接近于 0。</p><p> 每个按钮都使用 class: .button-1 , .button-2 &amp; .button-3 。 每个 div 都有不同的 ID: #div-1 、 #div-2和#div-3 。</p><p> 这是我正在使用的代码(每个按钮和 div 重复 x3):</p><pre> jQuery(document).ready(function() { // Hide the div jQuery('#div-1').hide(); jQuery('.button-1').click(function(e){ e.preventDefault();jQuery("#div-1").slideToggle('opened closed'); }); }); jQuery(function($){ $('.button-1').click(function(e){ e.preventDefault(); $('#div-2').hide(); $('#div-3').hide(); }); });</pre><p> 它工作正常。 当您打开和关闭同一个 div 时效果是平滑的,但是当您在另一个 div 打开时单击不同的按钮时,两个 div 之间的过渡效果并不平滑。</p><p> 有什么建议吗?<br> 这是<a href="https://jsfiddle.net/MilkyTech/n41pcgb3/29" rel="nofollow noreferrer">jsFiddle</a>中的一个示例。</p><p> 我想问一下,一旦打开其中一个,是否有可能不允许用户关闭.divs</p><p> 提前致谢!</p></div>
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM