我試圖得到比窗口,這將取決於鼠標的位置移動較大的列表較大。目標是允許用戶查看所有列表條目,無論數量如何。
下面是一個簡單的圖像,以說明這個概念:
- 黑幀是窗口
- 黑箭頭是鼠標位置
- 紅線是列表
問題
目前,只有設置了列表寬度,我才能完成此項工作。我想不是設置這個寬度。
下面的代碼:
$(document).ready(function() {
var widthPage = $('.strip').width();
var widthStrip = $('.strip ul').width();
$('.strip').on('mousemove', function(event) {
var offset = $(this).offset();
var relX = event.pageX - offset.left;
var left = relX * (widthStrip - widthPage)/widthPage;
$(this).find('ul').css('left', '-'+left+'px');
});
});
/* Positioning */
.strip {
position:relative;
overflow: hidden;
}
.strip ul {
position: absolute;
top: 0; left: 0;
width: 1750px;
}
.strip li {
display: block;
float: left;
}
/* Style */
body {
padding: 0;
margin: 0;
}
.strip {
height: 30px;
margin-top: 50px;
}
.strip ul {
height: 30px;
padding: 0;
margin: 0;
}
.strip li {
list-style: none;
border: 1px solid #EBEBEB;
margin-right: -1px;
padding: 0 5px;
line-height: 28px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class="strip">
<ul>
<li>Lorem</li>
<li>Ipsum</li>
<li>Dolor</li>
<li>Sit</li>
<li>Amet</li>
<li>Consectetur</li>
<li>Adipisicing</li>
<li>Elit</li>
<li>Sed</li>
<li>Do</li>
<li>Eiusmod</li>
<li>Tempor</li>
<li>Incididunt</li>
<li>Ut</li>
<li>Labore</li>
<li>Et</li>
<li>Dolore</li>
<li>Magna</li>
<li>Aliqua</li>
<li>Ut</li>
<li>Enim</li>
<li>Ad</li>
<li>Minim</li>
<li>Veniam</li>
<li>Quis</li>
<li>Nostrud</li>
<li>Exercitation</li>
<li>Ullamco</li>
<li>Laboris</li>
<li>Nisi</li>
<li>Ut</li>
<li>Aliquip</li>
<li>Ex</li>
<li>Ea</li>
<li>Commodo</li>
<li>Consequat</li>
</ul>
</div>
對這個簡單的CSS解決方案印象深刻,做得很好。 – zessx
有趣......我想到了所有這些問題,試過但沒有正常工作......不知道我錯在哪裏..當我用'inline-block'替換'float'時,我可能沒有nowrap。 gj –
@GiovanniSilveira可能。如果沒有'white-space:nowrap','inline-block'元素將簡單地包裹像浮動元素,而不是打破它們的容器。 – Nightfirecat