Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
限輪播圖效果
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>50-jquery無限循環(huán)滾動(dòng)圖片</title>
<style type="text/css">
*{
margin: 0; /*外邊距:0*/
padding: 0; /*內(nèi)邊距:0*/
}
div{
width: 600px; /*寬:600*/
height: 160px; /*高:160*/
border: #000000 solid 1px; /*邊框:黑色 實(shí)線 1像素*/
margin: 100px auto; /*外邊距:上100像素 左右自動(dòng)居中*/
position: relative; /*定位:相對(duì)定位*/
overflow: hidden; /*溢出:隱藏*/
}
ul{
list-style: none; /*列表樣式:無點(diǎn)*/
width: 2100px; /*寬:2100*/
height: 160px; /*高:160*/
}
ul>li{
float: left; /*浮動(dòng)布局:左浮動(dòng)*/
}
</style>
<script src="../static/js/jquery-3.6.0.js"></script>
<script>
$(function(){
var pianyi=0; // 定義一個(gè)偏移量為0
var timer=setInterval(function(){ // 定義一個(gè)定時(shí)器 50毫秒調(diào)用一次
if(pianyi>-1500){ // 如果偏移量大于 -1500
$('ul').css('margin-left', pianyi) // 把ul的樣式的左邊距設(shè)置成偏移量
pianyi -=5 // 偏移量每次減5
}else{pianyi=0} // 否則(偏移量等于0)
}, 50)
})
</script>
</head>
<body>
<div>
<ul class="ul1">
<li><img src="../static/image/1.jpeg" width="300px" height="160px"></li>
<li><img src="../static/image/2.jpeg" width="300px" height="160px" ></li>
<li><img src="../static/image/3.jpeg" width="300px" height="160px" ></li>
<li><img src="../static/image/4.jpeg" width="300px" height="160px" ></li>
<li><img src="../static/image/5.jpeg" width="300px" height="160px" ></li>
<li><img src="../static/image/1.jpeg" width="300px" height="160px"></li>
<li><img src="../static/image/2.jpeg" width="300px" height="160px" ></li>
</ul>
</div>
</body>
</html>
這個(gè)方法理論上是最簡(jiǎn)單效果也最好的方法。
CSS中有個(gè)background-attachment屬性,當(dāng)我們?cè)O(shè)置屬性值為fixed的時(shí)候,背景圖片相對(duì)于窗體定位,不受滾動(dòng)影響。
于是,我們的實(shí)現(xiàn)就很簡(jiǎn)單:信息流列表HTML中插入個(gè)廣告<a>鏈接,然后廣告圖作為背景圖呈現(xiàn),設(shè)置background-attachment:fixed效果就可以實(shí)現(xiàn)了,就這么簡(jiǎn)單。
HTML和CSS代碼示意:
<div class="list">信息流列表1</div> <div class="list">信息流列表2</div> <a href="#" class="ad" target="_blank">廣告</a> <div class="list">信息流列表3</div> <div class="list">信息流列表4</div> .ad { display: block; height: 600px; background: url(./ad.jpg) no-repeat top fixed; background-size: 100%; }
iOS Safari很早時(shí)候position:fixed也不支持,后來妥協(xié)了,支持了;但是background-attachment:fixed還是老樣子,不支持,怕是嫌棄background-attachment:fixed燒性能,對(duì)于一個(gè)連IE6,IE7瀏覽器都支持良好的CSS聲明,Safari不支持(包括iOS微信),我也無力說些什么。
因此,我們還需要額外做些功夫,兼容下iPhone手機(jī)瀏覽器。
我的做法是如果是iPhone手機(jī),廣告圖片postion:fixed定位,配合JS實(shí)時(shí)clip剪裁。核心JS如下:
// ele就是廣告元素DOM對(duì)象 window.addEventListener('scroll', function () { var bound=ele.parentElement.getBoundingClientRect(); var clip='rect('+ [bound.top + 'px', ele.parentElement.clientWidth + 'px', bound.bottom + 'px', 0].join() +')'; ele.style.clip=clip; });
查了下瀏覽器兼容性資料,發(fā)現(xiàn)Android4.4+版本開始,放棄了對(duì)background-attachment:fixed的支持,但是Android Chrome瀏覽器卻支持,這有些令人不解(見下圖)。
?
我用家里人的Android手機(jī)測(cè)試,背景效果表現(xiàn)為scroll,看來JS補(bǔ)丁要多個(gè)Android設(shè)備。
position:fixed也可以實(shí)現(xiàn)藏在后面的信息流廣告,實(shí)現(xiàn)原理就是藏在其他信息流元素的背后,以及頭部或者底部元素(如果有)的底部,關(guān)鍵就是z-index層級(jí)控制了。雖然原理簡(jiǎn)單,但是實(shí)際操作還是有些啰嗦的,通常信息流頁(yè)面的HTML結(jié)構(gòu)都比較復(fù)雜,此時(shí)再z-index屬性各種設(shè)置,很容易造成z-index混亂。
效果大致如下GIF截屏:
?
HTML和CSS代碼原理示意:
<div class="list">信息流列表1</div> <div class="list">信息流列表2</div> <a href="#" class="ad" target="_blank"> <img src="./ad.jpg"> </a> <div class="list">信息流列表3</div> <div class="list">信息流列表4</div>
.list { background-color: #fff; position: relative; z-index: 1; } .ad { display: block; height: 576px; } .ad img { position: fixed; top: 0; width: 400px; }
優(yōu)點(diǎn)和不足
基于position:fixed實(shí)現(xiàn)的優(yōu)點(diǎn)在于:
1. 我們的廣告內(nèi)容可以支持復(fù)雜HTML,而不僅僅是一張圖片;
2. 所有瀏覽器都兼容,包括iPhone Safari瀏覽器。
不足在于:
1. 需要其他元素進(jìn)行層級(jí)配合,相互耦合增加了CSS的復(fù)雜度。
如果實(shí)際開發(fā)時(shí)候發(fā)現(xiàn)z-index層級(jí)控制比較麻煩,可以試試第一個(gè)demo中使用的CSS clip剪裁,直接只顯示當(dāng)前廣告區(qū)域內(nèi)容,不過需要JS配合,不是純CSS實(shí)現(xiàn)了,自己權(quán)衡。
采用position:fixed固定定位實(shí)現(xiàn)的時(shí)候,我們還可以把廣告元素從信息流列表中抽離,直接放在整個(gè)容器的后面,然后借助visibility屬性實(shí)現(xiàn)點(diǎn)擊穿透,如下示意:
<a href="#" class="ad">廣告</a> <ul> <li>信息流列表1</li> <li>信息流列表2</li> <li></li> <!-- 撐開高度 --> <li>信息流列表3</li> <li>信息流列表4</li> </ul>
.ad { position: fixed; } ul { position: relative; visibility: hidden; } li:empty { /* 撐開高度,實(shí)際開發(fā)請(qǐng)使用類名控制,這里精簡(jiǎn)HTML才使用:empty */ height: 576px; } li:not(:empty) { visibility: visible; }
具體就不展開了。
英格蘭涼了,比利時(shí)很強(qiáng)。
希望本文內(nèi)容可以幫助需要的人。
然后,如果你有更好地實(shí)現(xiàn)方法,歡迎不吝賜教!
在Firefox中單獨(dú)設(shè)置滾動(dòng)條樣式,你可以使用?@-moz-document??規(guī)則。這個(gè)規(guī)則允許你為特定的瀏覽器或?yàn)g覽器引擎應(yīng)用樣式。
下面是一個(gè)例子,演示如何在Firefox中隱藏滾動(dòng)條:
@-moz-document url-prefix() {
/* 在這里添加只對(duì)Firefox生效的樣式 */
body {
scrollbar-width: none;
}
}
在上面的例子中,??@-moz-document url-prefix()??表示只有在URL以空字符串(即所有URL)為前綴的情況下,才會(huì)應(yīng)用其中的樣式。在??body??元素中,??scrollbar-width: none;??將隱藏滾動(dòng)條。
請(qǐng)注意,這樣的規(guī)則只在Firefox中生效,而在其他瀏覽器中會(huì)被忽略。確保在使用這樣的規(guī)則時(shí)進(jìn)行測(cè)試,以確保所需的效果在目標(biāo)瀏覽器中按預(yù)期工作。
在CSS中,??*???(星號(hào))和 ??body?? 分別選擇不同的元素或元素集合。
* {
margin: 0;
padding: 0;
}
上述代碼會(huì)將頁(yè)面中所有元素的內(nèi)外邊距設(shè)置為零。
body {
font-family: 'Arial', sans-serif;
background-color: #f0f0f0;
}
上述代碼會(huì)將文檔主體部分的字體設(shè)置為 Arial,并將背景顏色設(shè)置為 #f0f0f0。
所以,??*??? 是一個(gè)通用的選擇器,匹配所有元素,而 ??body??? 是特定于文檔主體的選擇器,用于選擇文檔主體元素并應(yīng)用樣式。在某些情況下,你可能希望使用 ??body?? 選擇器,以更有針對(duì)性地影響文檔的主要內(nèi)容區(qū)域。
在最新的 Firefox 版本中,??-moz-scrollbar-thumb?? 偽類選擇器已被棄用,取而代之的是使用更通用的 CSS Scrollbar 模塊規(guī)范。為了在 Firefox 中優(yōu)化滾動(dòng)條并使其變細(xì),你可以使用新的規(guī)范中的屬性。
以下是一個(gè)簡(jiǎn)單的示例,可以使 Firefox 中的滾動(dòng)條變細(xì):
/* Firefox 滾動(dòng)條樣式 */
* {
scrollbar-width: thin;
scrollbar-color: #999999 #f0f0f0;
}
/* Webkit 滾動(dòng)條樣式(Chrome, Safari等)*/
*::-webkit-scrollbar {
width: 12px;
}
*::-webkit-scrollbar-thumb {
background-color: #999999;
}
*::-webkit-scrollbar-track {
background-color: #f0f0f0;
}
上述樣式包含兩部分:
請(qǐng)注意,滾動(dòng)條樣式在不同瀏覽器中可能會(huì)有所不同,因此上述樣式在 Firefox 中有效,而 Webkit 樣式在 Chrome 和 Safari 中有效。在實(shí)際使用中,你可能需要根據(jù)需要進(jìn)行調(diào)整和測(cè)試,以確保在不同瀏覽器中都能達(dá)到預(yù)期的效果。
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。