侧面菜单出现 - div不动

时间:2014-12-05 11:30:12

标签: javascript jquery html css

我在HTML应用程序中添加了一个侧边菜单图层,引用了这个链接http://www.uiupdates.com/sidebar-menu-layer-with-jquery/

当我按下菜单按钮&侧边菜单上诉。我的以下div类"buttoncls_scrollableCenter" & "buttoncls_fotter"能够在菜单出现时向右移动。

但是当出现侧边菜单时,此div "buttoncls_scrollable"不会向右移动。

如果出现侧边菜单,如何移动此div "buttoncls_scrollable"

代码: -

<!DOCTYPE html>
<html style="height: 100%;">

<head>
<title>My item list </title>
<style>
body, html {
    width:100%;
    height:100%;
    margin:0;
    padding:0;
    position:relative;
}

.div_wrapper {
 left:0px;
 z-index:100;
}
.div_layer {
 background: none repeat scroll 0 0 #3e4046;
 position: absolute;
 width: 200px;
 height: 100%;
}
.div_layer ul {
 list-style-type: none;
margin: 0;
padding: 0;
}
.div_layer ul li {
border-bottom: 1px solid #dfdfdf;
overflow: hidden;
padding: 5px;
height: 33px;
color:white;
text-align:center;
}
.buttoncls {
 background:#767676;
 width:75px;
 height:25px;
 position:absolute;
 float:left;
 border:1px solid #000;
 cursor:pointer;
 color:#fff;
}

.input {
    display: inline-block;
    padding: 0 2px;
}
.input input {
    display: block;
}
.imgtxt {
    margin: 0;
    font-family:arial;
    color:#DDDFED;
    font-size:15px;
}
#images {
    background-color: grey;
    white-space:nowrap;
}
div.scrollable {
    margin: 0;
    padding: 0;
    overflow: auto;
    padding-left: 4px;
    padding-top: 20px;
    box-sizing:border-box;
}


div.scrollableMenu {
    margin: 0;
    padding: 0;
    overflow: auto;
    padding-left: 4px;
    padding-top: 20px;
    box-sizing:border-box;
}

div.scrollableCenter {
    margin: 0;
    padding: 0;
    overflow: auto;
    padding-left: 4px;
    padding-top: 20px;
    box-sizing:border-box;
}

#center {
    background-color:#292B3B;
    position:absolute;
    top:115px;
    left:0px;
    right:0px;
    bottom:20px;
}
#fotter {
    background-color:#CC99FF;
    text-align:center;
    position:absolute;
    left:0;
    bottom:0;
    width:100%;
}
</style>


<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script>
function menu_onclick() {

    var rig=$('.div_layer').position().left;
    if(rig == 0 )
    {


      $('.div_layer').animate({left:-this.width}, 300);

        $(".buttoncls_scrollable").animate({left:'0px'}, 300);
      $(".buttoncls_scrollableCenter").animate({left:'0px'}, 300);
      $(".buttoncls_fotter").animate({left:'0px'}, 300);
    }
    else
    {
        var center = this.width;

      $('.div_layer').animate({left:'0px'}, 300);

        $(".buttoncls_scrollable").animate({left:this.width}, 300);
        $(".buttoncls_scrollableCenter").animate({left:center}, 300);
        $(".buttoncls_fotter").animate({left:this.width}, 300);

    }

}


function doc_onload() {

    this.width = $('.div_layer').width();
    $('.div_layer').css('left',-this.width);
    this.rig = $('.div_layer').position().left;


};

//http://rickluna.com/wp/2012/10/setting-css-background-colors-via-javascript-rgb-triplet-vs-hex/

 function convertToHex(str){
    var raw = str.match(/(\d+)/g);
    var hexr = parseInt(raw[0]).toString(16);
    var hexg = parseInt(raw[1]).toString(16);
    var hexb = parseInt(raw[2]).toString(16);
        hexr = hexr.length == 1 ? '0' + hexr: hexr;
        hexg = hexg.length == 1 ? '0' + hexg: hexg;
        hexb = hexb.length == 1 ? '0' + hexb: hexb;
    var hex = '#' + hexr + hexg + hexb;
    return hex;
  }

//

function selectId(id) {
    //alert(id);

   if(id == "1")
   {

//alert('one');

    var div = document.getElementById('1');
    div.style.backgroundColor = 'red';

    var div = document.getElementById('2');
    div.style.backgroundColor = 'black';

    var div = document.getElementById('3');
    div.style.backgroundColor = 'black';

   }


//http://stackoverflow.com/questions/13712697/set-background-color-in-hex
//http://rickluna.com/wp/2012/10/setting-css-background-colors-via-javascript-rgb-triplet-vs-hex/
   if(id == "2")
   {
//alert('two');

    var div = document.getElementById('1');
    div.style.backgroundColor = 'black';

    var div = document.getElementById('2');
    div.style.backgroundColor = 'red';

    var div = document.getElementById('3');
    div.style.backgroundColor = 'black';

   }


   if(id == "3")
   {
//alert('three');

    var div = document.getElementById('1');
    div.style.backgroundColor = 'black';

    var div = document.getElementById('2');
    div.style.backgroundColor = 'black';

    var div = document.getElementById('3');
    div.style.backgroundColor =   'red';

   }

    $('.div_layer').animate({left:-this.width}, 300);

    var center = 250;

    $(".buttoncls_scrollable").animate({left:'100px'}, 300);
    $(".buttoncls_scrollableCenter").animate({left:'0px'}, 300);
    $(".buttoncls_fotter").animate({left:'0px'}, 300);

    //collaspe the menu
};

</script>

</head>

<body onload="doc_onload()">


   <div class="div_layer">
         <ul>
         <li onclick="selectId(this.id)" id="1">Fruits</li>
         <li onclick="selectId(this.id)" id="2">Automobile</li>
         <li onclick="selectId(this.id)" id="3">Cloth</li>

         </ul>
   </div>
    <div id="images" class="scrollable buttoncls_scrollable">

        <div class="input">
            <input type="image" src="http://www.shoredreams.net/wp-content/uploads/2014/02/show-menu-icon.png" onclick="menu_onclick()"  alt="Bulb pop up" width="80" height="48" />
            <p class="imgtxt">Menu</p>
        </div>

        <div class="input">
            <input type="image" src="http://t3.gstatic.com/images?q=tbn:ANd9GcRTBRnn9Aqx74JvKyJ7Z5ydbXXuj8cIDVuOdJZUxb02Q2LWfJGP" onclick="alert('clicked')"  alt="Bulb pop up" width="80" height="48" />
            <p class="imgtxt">Normal Vegitable</p>
        </div>
        <div class="input">
            <input type="image" src="http://www.boldsky.com/img/2013/03/19-greenveggies.jpg" onclick="alert('clicked')" alt="Bulb pop up" width="80" height="48" />
            <p class="imgtxt">Green Vegitable</p>
        </div>
    </div>
    <div id="center" class="scrollableCenter buttoncls_scrollableCenter">
        <div >
            <input type="image" src="http://t1.gstatic.com/images?q=tbn:ANd9GcTMPmp8aVaovrd3AGj1_hL_GEXX1M4DJ-TTMJ34Vr622XeY_usu" onclick="alert('clicked')" alt="Bulb pop up" width="80" height="48" hspace="10" vspace="6"/>
            <p class="imgtxt" style="padding-top : 20px; padding-right : 100px; float:right;">brinjal</p>
        <hr/>
        </div>

        <div >
            <input type="image" src="http://upload.wikimedia.org/wikipedia/commons/2/25/Cauliflower.JPG" onclick="alert('clicked')" alt="Bulb pop up" width="80" height="48" hspace="10" vspace="6"/>
            <p class="imgtxt" style="padding-top : 20px; padding-right : 100px; float:right;">cauliflower</p>
        <hr/>
        </div>

        <div >
            <input type="image" src="https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcQJgt4i9ph9uQsS3JV940PBg-kwN1kkrKbC6FLYI6UhbxucEb91" onclick="alert('clicked')" alt="Bulb pop up" width="80" height="48" hspace="10" vspace="6"/>
            <p class="imgtxt" style="padding-top : 20px; padding-right : 100px; float:right;">tomato</p>
        <hr/>
        </div>

    <div >
            <input type="image" src="https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcT-mwuxaqQeHXjoZzPUoee9Rvg8Jq-eCvo8H0EgEtapjfr6U4E3" onclick="alert('clicked')" alt="Bulb pop up" width="80" height="48" hspace="10" vspace="6"/>
            <p class="imgtxt" style="padding-top : 20px; padding-right : 100px; float:right;">ladyfinger</p>
        <hr/>
        </div>

    <div >
            <input type="image" src="http://t2.gstatic.com/images?q=tbn:ANd9GcQRxXUO2stKHLyET_rXpxOuLp67qc1IzlBcJGke5jYoGPeRZpnO" onclick="alert('clicked')" alt="Bulb pop up" width="80" height="48" hspace="10" vspace="6"/>
            <p class="imgtxt" style="padding-top : 20px; padding-right : 100px; float:right;">radish</p>
        <hr/>
        </div>

    <div >
            <input type="image" src="http://t3.gstatic.com/images?q=tbn:ANd9GcT2zCeG621TSX1YmcsT9DPLaQJkdVwdYk_n-eWECCa8NTtXR0LFeQ" onclick="alert('clicked')" alt="Bulb pop up" width="80" height="48" hspace="10" vspace="6"/>
            <p class="imgtxt" style="padding-top : 20px; padding-right : 100px; float:right;">ginger</p>
        <hr/>
        </div>
    </div>
    <div class="buttoncls_fotter" id="fotter">List of Items</div>
</body>
</html>

实际Html页面: - enter image description here

侧面菜单出现,顶部div没有移动: - enter image description here

2 个答案:

答案 0 :(得分:0)

您需要绝对定位buttoncls_scrollable

div.scrollable {
    position: absolute;
    right:0;
    left:0;
}

Example

如果您还将#fotter更改为right:0而不是width:100%;,则会在侧边菜单显示时出现水平滚动条,以解决您的问题

答案 1 :(得分:0)

为什么不使用jquery?这将非常简单。 有多种方法可以做到,但你可以使用Jquery click()函数来执行操作并使用Jquery addClass()函数来提供&#39; body&#39; (或其他&#39;包装所有&#39;元素)一个类,以便在点击后影响他的所有孩子 - 菜单和新div的新位置(除了菜单本身之外的所有元素的div)。在HTML上,添加一个div,它将包装除菜单本身之外的所有元素,并在输入图像中添加一个类或id以避免冲突,例如添加一个id(id =&#34; menu_button&#34;)和用jquery调用它:

Jquery的:

$(document).ready(function(){
    $('#menu_button').click(function(){
        if ($('body').hasClass('show')){    
            $('body').removeClass('show');  
        }
        else {
            $('body').addClass('show')
        }
    });
});

在CSS上,你需要添加新的div包。添加left: 200px;(菜单的宽度)以在不需要显示菜单时完全隐藏菜单。添加z-index: 1;(您可以使用更高的值,只要它将高于需要在下面的所有其余元素)。使其菜单高于其他元素。使用left: 0;添加新类,将菜单置于单击后所需的位置。您可以使用CSS3 transition来获得更好的效果。

CSS:

.content_wrap
{
    width: 100%;
    height: 100%;
    float: right;
}

.show .content_wrap
{
    width: calc(100% - 200px);
}

.div_layer
{
     background: none repeat scroll 0 0 #3e4046;
     position: absolute;
     left: -200px;
     width: 200px;
     height: 100%;
     z-index: 1;
}

.show .div_layer
{
    left: 0;   
}

.content_wrap, .div_layer
{
     -webkit-transition: 1s;
     -moz-transition: 1s;
     transition: 1s;   
}

示例:http://jsfiddle.net/6dgbp5dh/1/