이 글은 주로 레이블 내용 전환 기능을 구현하기 위해 js + css를 공유합니다(예시 포함 설명). 먼저 렌더링을 첨부하고 예제 코드를 가르쳐 드리며 도움이 되길 바랍니다.
먼저 렌더링과 코드를 첨부하세요:
html 문서:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script type="text/javascript" src="../js/tabs_function.js"></script> <script type="text/javascript"> window.onload = function main() { Tabs(".list-item", ".contents", "list-item-checked", "contents-checked"); } </script> <style type="text/css"> #list-title { width: 318px; height: 56px; margin: 0; list-style-type: none; padding-left: 0; } .list-item { float: left; width: 100px; height: 50px; margin: 2px; line-height: 50px; font-size: 28px; text-align: center; border: 1px solid #000; cursor: pointer; } .list-item-checked { background-color: #70adff; color: #ffffff; } #content-box { position: relative; clear: both; width: 314px; height: 302px; margin: 0 2px; } .contents { position: absolute; left: 0; top: 0; width: 312px; height: 300px; margin: 0; font-size: 32px; line-height: 300px; text-align: center; border: 1px solid #000; z-index: 0; opacity: 0; visibility: hidden; -webkit-transition: all .5s; -moz-transition: all .5s; -ms-transition: all .5s; -o-transition: all .5s; transition: all .5s; } .contents-checked { z-index: 1; opacity: 1; visibility: visible; } </style> </head> <body> <ul id="list-title"> <li class="list-item list-item-checked">1</li> <li class="list-item">2</li> <li class="list-item">3</li> </ul> <p id="content-box"> <p class="contents contents-checked" style="background-color: #c8ff40;">content_1</p> <p class="contents" style="background-color: #41ff6f;">content_2</p> <p class="contents" style="background-color: #ff82a0;">content_3</p> </p> </body> </html>
js 파일:
/** * Created by Administrator on 2016/9/12. */ /* * tabs_name:用于触发事件的标签的类名; * contents_name:内容容器的类名; * tabs_checked_style:标签为选中状态时的样式; * contents_checked_style:内容容器为选中状态时的样式; * * classList.toggle(); * 检查元素的类名列表中是否有指定的类名,如果有则移除,如果没有则添加; * */ function Tabs(tabs_name, contents_name, tabs_checked_style, contents_checked_style) { var tabs = document.querySelectorAll(tabs_name), contents = document.querySelectorAll(contents_name), e_mark = 0; for (var i = 0, len = tabs.length; i < len; i++) { tabs[i].num = i; tabs[i].onclick = function () { tabs[e_mark].classList.toggle(tabs_checked_style); tabs[this.num].classList.toggle(tabs_checked_style); contents[e_mark].classList.toggle(contents_checked_style); contents[this.num].classList.toggle(contents_checked_style); e_mark = this.num; }; } }
원리와 메커니즘
CSS 클래스의 오버레이 효과에 대해.
우리는 요소에 여러 클래스 이름을 추가할 수 있으며 여러 클래스의 스타일이 동시에 계단식으로 표시되어 표시된다는 것을 알고 있습니다.
예:
.list-item { float: left; width: 100px; height: 50px; margin: 2px; line-height: 50px; font-size: 28px; text-align: center; border: 1px solid #000; cursor: pointer; } .list-item-checked { background-color: #70adff; color: #ffffff; }
첫 번째 li의 클래스 속성에는 .list-item 및 .list-item-checked라는 두 가지 클래스 이름이 있는 것을 볼 수 있습니다. 그러면 이 li 요소는 두 클래스의 스타일을 동시에 갖게 됩니다.
이에 비해 두 번째와 세 번째 li 클래스에는 .list-item만 있습니다. 따라서 .list-item-checked에 의해 설정된 스타일이 없습니다.
주제로 돌아가서 레이블을 전환하고 실제로 요소를 가져온 다음 요소의 스타일을 수정하세요. 그런 다음 요소 스타일을 "classList"로 제어하여 요소의 클래스 이름을 제어함으로써 스타일을 수정할 수 있습니다.
classList 메소드에 대한 간략한 소개입니다.
1. element.classList는 요소의 클래스 이름 목록을 가져옵니다.
2. element.clasList.add(value); 이 메소드는 지정된 클래스 이름을 요소의 클래스 이름 목록에 추가하는 것입니다. 요소의 클래스 이름 목록에서 이름을 삭제합니다.
4. element.classList.contains(value) 이 메서드는 지정된 클래스 이름이 요소의 클래스 이름 목록에 있는지 확인하는 것입니다. 불리언 값
5. element.classList .toggle(value); 이 메소드는 요소의 클래스 이름 목록에 지정된 클래스 이름이 있는지 확인하는 것입니다. 존재하지 않으면 클래스 이름을 추가합니다. 클래스 이름 중 "value"의 값은 변수 또는 문자열 상수일 수 있습니다.
js part element.classList.add("class-name"); // 字符串
element.classList.add(class_name); // 变量
element.classList.remove(class_name);
element.classList.contains(class_name); // true,false
element.classList.toggle(class_name); // 有则删,无则添;
1.
e_mark = 0; for (var i = 0, len = tabs.length; i < len; i++) { tabs[i].num = i; tabs[i].onclick = function () { tabs[e_mark].classList.toggle(tabs_checked_style); tabs[this.num].classList.toggle(tabs_checked_style); contents[e_mark].classList.toggle(contents_checked_style); contents[this.num].classList.toggle(contents_checked_style); e_mark = this.num; }; }
e_mark = 0;
3. 현재 요소와 업데이트된 요소의 스타일을 수정합니다.
tabs[i].num = i;
관련 권장 사항:
대체 아코디언 효과 웹 콘텐츠 전환 code_javascript 기술의 JS 구현
위 내용은 js 및 css 태그 콘텐츠 전환 기능 구현에 대한 튜토리얼의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!