2013-10-17 37 views
0

使用jQuery設置動畫寬度()會在下面創建某種填充。jQuery width()動畫創建填充(可能的CSS問題)

我有一個隱藏的元素(輸入),因爲父母有溢出:隱藏。當用戶點擊鏈接時,鏈接本身消失,並將寬度改變爲輸入的一個,以便神奇地顯示輸入。不幸的是,它僅在動畫過程中創建了某種填充。

這裏有一個的jsfiddle(點擊 「S」 框或只是對HTML的任何地方):

http://jsfiddle.net/46XxU/1/

這裏的JS:

jQuery('#search').on('click', function(){ 
     event.stopPropagation(); 
     var formWidth = jQuery(this).children('form').width(); 
     jQuery(this).children('form').animate({left: "0"}); 
     jQuery(this).animate({width: formWidth}); 
     jQuery('#search form input').focus(); 
    }); 

    jQuery('html').click(function(){ 
     jQuery('#search').animate({width: "2rem"}); 
     jQuery('#search form').animate({left: "2rem"}); 
     jQuery('#search form input').val(''); 
    }); 

和HTML:

<div id="menu"> 
    <a href="#" class="link">Other links</a> 
    <a href="#" class="link">Other links</a> 
    <div id="search"> 
    <i class="icon">s</i> 
    <form method="get" action=""> 
    <input type="text" placeholder="type to search..." /> 
    </form> 
    </div> 
</div> 
<p>Click on "s" to show search input. Or anywhere on the site to hide it. Why does it add some kind of margin/padding on click?</p> 
<marquee>Welcome! It's 1999 all over again!</marquee> 

And CSS:

body { 
    padding: 0; 
    margin: 0; 
    text-align: center; 
} 

#menu { 
    text-align: right; 
    background: #555; 
    margin: 0 auto; 
    width: 500px; 
    overflow: hidden; 
} 

#search { 
    display: inline-block; 
    width: 2rem; 
    cursor: pointer; 
    position: relative; 
} 

#search, 
#search i { 
    line-height: 2rem; 
    text-align: center; 
    width: 2rem; 
    height: 2rem; 
    background: #eee; 
} 

#search form { 
    position: absolute; 
    top: -2px; 
    left: 2rem; 
    width: 180px; 
} 

#search form input { 
    position: relative; 
    height: 2rem; 
    border: 0; 
    width: 180px; 
    background: #efefef; 
} 

marquee { 
    width: 500px; 
    margin: 0 auto; 
} 

和小提琴再次:http://jsfiddle.net/46XxU/1/

回答

1

如果你看到當你點擊#搜尋了jQuery把溢出:隱藏風格元素,這是使那種填充。另外,如果你把:

#search{ 
    overflow:hidden; 
} 

填充是永久顯示。所以有些東西正在增加額外的空間,那就是菜單容器。只要把#menu{height: 2rem;}

這應該解決這個問題。

工作例如:http://jsfiddle.net/46XxU/2/

更新#1:最有可能的一個環節,使多餘的空間,這樣的方式#menu的高度大於搜索輸入。

更新#2:因爲我的第一個解決方案的鏈接不能很好地顯示我做了一些改變的HTML和CSS來使它正確。 http://jsfiddle.net/46XxU/3/

+0

謝謝隊友,輝煌! – Wordpressor

+1

謝謝你!我做了一個更新#2,以防你沒有看到它。乾杯 – Laxmana

+0

其實我發現它,因爲我正要問它,謝謝! – Wordpressor