要实现无间断滚动的新闻文章列表,需要用到HTML、CSS和JavaScript技术。下面是实现该功能的完整攻略:
HTML结构
首先,为了实现滚动效果,需要先在HTML中创建一个容器元素,用来包裹所有新闻文章列表。例如:
<div id="news-container">
<!-- 新闻文章列表 -->
<ul id="news-list">
<li>...</li>
<li>...</li>
<li>...</li>
<!-- 更多新闻... -->
</ul>
</div>
CSS样式
为了让滚动容器元素正常显示,需要设置合适的CSS样式,例如:
#news-container {
overflow: hidden; /* 隐藏溢出部分 */
width: 100%; /* 设置宽度为父元素的100% */
}
#news-list {
margin: 0;
padding: 0;
list-style: none;
white-space: nowrap; /* 不换行 */
display: inline-block; /* 行内块元素 */
-webkit-animation: marquee 15s linear infinite; /* 使用CSS动画实现滚动 */
-moz-animation: marquee 15s linear infinite;
-o-animation: marquee 15s linear infinite;
animation: marquee 15s linear infinite;
}
@keyframes marquee {
0% {
transform: translateX(0); /* 初始位置为0 */
-webkit-transform: translateX(0);
-moz-transform: translateX(0);
-o-transform: translateX(0);
}
100% {
transform: translateX(-100%); /* 最终位置为-100%(整个宽度) */
-webkit-transform: translateX(-100%);
-moz-transform: translateX(-100%);
-o-transform: translateX(-100%);
}
}
JavaScript交互
为了实现兼容IE、Firefox和Opera的滚动效果,需要使用JavaScript来检测浏览器类型并动态生成CSS样式。例如:
var iswebkit = /webkit/i.test(navigator.userAgent);
var ismozilla = /mozilla/i.test(navigator.userAgent) && !/(compatible|webkit)/i.test(navigator.userAgent);
var isopera = /opera/i.test(navigator.userAgent);
if (iswebkit) { // Safari和Chrome浏览器支持CSS动画
document.styleSheets[0].insertRule("@-webkit-keyframes marquee { ... }");
} else if (ismozilla) { // Firefox浏览器支持CSS动画
document.styleSheets[0].insertRule("@-moz-keyframes marquee { ... }");
} else if (isopera) { // Opera浏览器使用单独的CSS属性
var newsList = document.getElementById("news-list");
newsList.style.OAnimation = "marquee 15s linear infinite";
}
示例说明
示例1:使用图片代替文字
<div id="news-container">
<ul id="news-list">
<li><img src="img1.jpg" alt="新闻1"></li>
<li><img src="img2.jpg" alt="新闻2"></li>
<li><img src="img3.jpg" alt="新闻3"></li>
<!-- 更多新闻... -->
</ul>
</div>
<style>
#news-list li {
display: inline-block;
vertical-align: middle;
margin-right: 20px;
}
#news-list li img {
max-width: 100%;
}
</style>
<script>
var newsList = document.getElementById("news-list");
var newsItems = newsList.getElementsByTagName("li");
for (var i = 0; i < newsItems.length; i++) {
var img = newsItems[i].getElementsByTagName("img")[0];
var title = img.getAttribute("alt");
newsItems[i].innerHTML = "<a href='#'>" + img.outerHTML + "<span>" + title + "</span></a>";
}
</script>
示例2:滚动多列新闻
<div id="news-container">
<ul id="news-list">
<li><a href="#">新闻1</a></li>
<li><a href="#">新闻2</a></li>
<li><a href="#">新闻3</a></li>
<li><a href="#">新闻4</a></li>
<li><a href="#">新闻5</a></li>
<li><a href="#">新闻6</a></li>
<!-- 更多新闻... -->
</ul>
<ul id="news-list2">
<li><a href="#">新闻1</a></li>
<li><a href="#">新闻2</a></li>
<li><a href="#">新闻3</a></li>
<li><a href="#">新闻4</a></li>
<li><a href="#">新闻5</a></li>
<li><a href="#">新闻6</a></li>
<!-- 更多新闻... -->
</ul>
</div>
<style>
#news-container {
width: 100%;
}
#news-list,
#news-list2 {
width: 48%;
display: inline-block;
vertical-align: top;
}
#news-list li,
#news-list2 li {
padding: 10px;
border-bottom: 1px solid #ddd;
}
#news-list2 {
margin-left: 2%;
}
</style>
经过上面的步骤,即可实现无间断滚动的新闻文章列表,兼容IE、Firefox和Opera,并符合W3C标准,可作Marquee。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:无间断滚动的新闻文章列表,兼容IE、Firefox和Opera,符合W3C标准。可作Marquee - Python技术站