Jquery按钮单击以使用幻灯片动画从右到左显示div

时间:2015-05-12 18:07:40

标签: javascript jquery html css

我有一个关于点击显示从右到左div的问题。

这是来自jsfiddle的 DEMO 页面。

在此演示中,您可以看到红色背景颜色div(单击以显示信息)。 单击此div时,将打开info div。但它并不适用于左侧。

我怎样才能让它向左开?任何人都可以在这方面帮助我

JS

$(".clickshowinfo").click(function(){
    var id = $(this).data("id");
    $(".user-info").fadeIn().find(".user-info-in").animate({"right":0}, 200);   
});

$(".user-info").click(function(){
    $(".user-info-in").animate({"right":"-200px"},200,function(){
        $(".user-info").fadeOut();   
    }) 

});

$(".cc").click(function(e){ 
    e.stopPropagation();

});

CSS

body{
    background-color:#000;
}
.clickshowinfo{
  margin:0px auto;
  width:150px;
  margin-top:10px;
  cursor:pointer;
  background-color:Red;
}
.global-message-container {
  display: block;
  position: absolute;
  height: auto;
  bottom: 0;
  top: 0;
  left: 0;
  right: 0;
  max-width: 980px;
  min-width:300px;
  margin-top: 80px;
  margin-bottom: 20px;
  margin-right: auto;
  margin-left: auto;
  background-color: #ffffff;
  box-shadow: 0 1px 1px 0 rgba(0,0,0,.06),0 2px 5px 0 rgba(0,0,0,.2);
  -webkit-box-shadow: rgba(0, 0, 0, 0.0588235) 0px 1px 1px 0px, rgba(0, 0, 0, 0.2) 0px 2px 5px 0px;
  border-radius: 3px;
  -webkit-border-radius: 3px;
  -o-border-radius: 3px;
  -moz-border-radius: 3px;
  min-height: 140px;
}
.chat-list-container {
  display: block;
  position: absolute;
  float: left;
  width: 30%;
  overflow: hidden;
  padding: 0px;
  bottom: 0;
  top: 0;
  left: 0;
  background-color: #ffffff;
  border-right: 1px solid #d8dbdf;
  -webkit-border-top-left-radius: 3px;
  -webkit-border-bottom-left-radius: 3px;
  -moz-border-radius-topleft: 3px;
  -moz-border-radius-bottomleft: 3px;
  border-top-left-radius: 3px;
  border-bottom-left-radius: 3px;
  transition: opacity 2s, width 2s, left 2s, font-size 2s, color 2s;
}
.chat-container {
  display: block;
  position: absolute;
  width: 70%;
  bottom: 0;
  top: 0;
  right: 0;
  background-color: #f7f9fa;
  -webkit-border-top-right-radius: 3px;
  -webkit-border-bottom-right-radius: 3px;
  -moz-border-radius-topright: 3px;
  -moz-border-radius-bottomright: 3px;
  border-top-right-radius: 3px;
  border-bottom-right-radius: 3px;
}
@media all and (max-width: 640px){
  .chat-list-container {
    display:none;
  }
  .secret{
    float:left;
    display:block;
  }
  .chat-container{
    width:100%;
  }
}
.user-info {
  display:none;
      transform: translateX(0px);
    right: 0!important;
    left: auto;
    -webkit-box-flex: 0;
  -webkit-flex: 0 0 auto;
  -ms-flex: 0 0 auto;
  flex: 0 0 auto;
  right: auto;
  z-index: 1000!important;
  -webkit-align-self: auto!important;
  -ms-flex-item-align: auto!important;
  align-self: auto!important;
  height: 100%;
  overflow: hidden;
  position: absolute;
  width: 30%;
  margin: 0;
  padding: 0;
  border: 0;
  font-size: 100%;
  font: inherit;
  vertical-align: baseline;
  outline: none;
  background-color:#dddddd;

    }
.user-info-in{
    background-color: #dddddd;
  width: 100%;
  top: 0;
  z-index: 1000;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -webkit-flex-direction: column;
  -ms-flex-direction: column;
  flex-direction: column;
  height: 100%;
  overflow: hidden;
  position: absolute;
  left: 0;
    }
.cc{
    background-color:blue;
}

2 个答案:

答案 0 :(得分:1)

如果我做对了,你想要一个向左滑动的菜单。

我改变了什么:

  1. 我改变了动画。我个人更喜欢动画窗口的宽度。有很多不同的方法,但我认为这是一个更容易的方法。正如您在jsfiddle文件中看到的那样,宽度被更改为所需的宽度。

  2. 代码:

    $(".clickshowinfo").click(function(){
       var id = $(this).data("id");
       $(".user-info").animate({width:"30%"}, 200).find(".user-info-in").animate({width:"100%"}, 200);   
    });
    $(".user-info").click(function(){
       $(".user-info-in").animate({width:"0%"},200);
       $(".user-info").animate({width:"0%"},200);      
    });
    

    代码完全显示宽度动画,只需点击演示链接

    即可
    1. css现在需要宽度:0;这样你就再也看不到div了。
    2. 显示:无;必须被删除,否则即使你改变宽度,div也会一直不可见。
    3. 右侧属性必须为菜单div上的0(右:0;)
    4. div现在是"隐形"因为它没有宽度,但是一旦你点击按钮就会得到一个宽度,它会将自己推离左墙,从而产生所需的动画。

      希望能帮到你。如果您需要更多解释或者您想要其他内容,请发表评论。

      <强> Demo

答案 1 :(得分:0)

看起来你没有将div(.user-info-in)放在起始位置。

这是更新的小提琴代码 -

.user-info-in{
  left:auto;
  right: -200px;
}

<强> Updated Fiddle

如果您的意思相同,请告诉我。