当页面宽度低于指定数量时,您可以使用 CSS @media 隐藏/显示元素。
HTML:
<p>here is some content.</p>
<p id="extra_content" class="extra_content">here is some extra content</p>
<button id="read_more" class="read_more">Show More</button>
CSS:
@media (max-width: 650px) {
.extra_content {
display: none;
}
#read_more {
display: block;
}
}
.read_more {
display: none;
}
.show {
display: block!important;
}
纯 JavaScript:
document.getElementById("read_more").addEventListener( 'click' , changeClass);
function changeClass() {
var content = document.getElementById("extra_content");
var btn = document.getElementById("read_more");
content.classList.toggle('show');
if (content.classList.contains("show")) {
btn.innerHTML = "Show Less";
} else {
btn.innerHTML = "Show More";
}
}
这是一个工作示例:http: //jsfiddle.net/xfgqW/2/
在这里阅读更多:http ://webdesignerwall.com/tutorials/responsive-design-with-css3-media-queries
使用多个按钮
为了使用多个按钮,我们需要稍微修改一下。基本上我们需要使用一个公共类来查询按钮元素并循环它们以分配点击事件并更改innerHtml。例如:
<button class="read_more">Show More</button>
<p>here is some content.</p>
<p class="extra_content">here is some extra content</p>
<button class="read_more">Show More</button>
document.querySelectorAll("button.read_more").forEach(function(button) {
button.addEventListener( 'click' , changeClass);
});
function changeClass() {
var content = document.getElementById("extra_content");
var buttons = document.querySelectorAll("button.read_more");
content.classList.toggle("show");
var buttonText = content.classList.contains("show") ? "Show Less" : "Show More";
buttons.forEach(function(button) {
button.innerHTML = buttonText;
});
}
这是一个带有多个按钮的工作示例:https ://jsfiddle.net/uc8d7w3e/1/