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>
<div id="content-box">
<div class="contents contents-checked" style="background-color: #c8ff40;">content_1</div>
<div class="contents" style="background-color: #41ff6f;">content_2</div>
<div class="contents" style="background-color: #ff82a0;">content_3</div>
</div>
</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 의 class 속성 중 두 가지 유형 이 있 습 니 다."list-item"과"list-item-checked"입 니 다.그러면 이 li 요 소 는 이 두 가지 스타일 을 동시에 가지 게 될 것 이다.비교 해 보면 두 번 째 와 세 번 째 li 의 class 는'list-item'밖 에 없다.그래서 그들 은.list-item-checked 가 설정 한 스타일 을 가지 고 있 지 않 습 니 다.
테마 로 돌아 가 탭 을 전환 합 니 다.실제 적 으로 요 소 를 가 져 온 다음 에 요소 의 스타일 을 수정 합 니 다.그러면 그 중의 요소 스타일 은'classList'를 통 해 요소 의 유형 명 을 제어 하여 스타일 을 수정 할 수 있 습 니 다.
classList 방법 을 간단히 소개 합 니 다.
1.element.classList 는 요소 의 클래스 이름 목록 만 가 져 옵 니 다.
2. element.clasList.add(value); 이 방법 은 요소 의 클래스 이름 목록 에 지정 한 클래스 이름 을 추가 하 는 것 입 니 다.
3. element.classList.remove(value); 이 방법 은 요소 의 클래스 이름 목록 에서 지정 한 클래스 이름 을 삭제 합 니 다.
4. element.classList.contains(value); 이 방법 은 요소 의 클래스 이름 목록 에 지정 한 클래스 이름 이 있 는 지 판단 하 는 것 입 니 다.이 방법 은 불 값 을 되 돌려 줍 니 다.
5. element.classList.toggle(value); 이 방법 은 요소 의 클래스 이름 목록 에 지정 한 클래스 이름 이 있 는 지 판단 하고 존재 하면 이 클래스 이름 을 삭제 합 니 다.존재 하지 않 으 면 이 클래스 이름 을 추가 합 니 다.
그 중에서'value'의 값 은 변수 나 문자열 상수 일 수 있 습 니 다.
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); // , ;
js 부분
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;
};
}
1. “e_mark"의 역할:
e_mark = 0;
최초의"emark 의 값 은 0 입 니 다.emark 는 현재 선 택 된 요소 가 번호 가 0 인 요 소 를 가리 키 고 있 습 니 다.2."tabs[i].num=i"의 역할:
tabs[i].num = i;
상부 의 for 순환 에서'i'의 값 은 바로'tabs'배열 의 각 요소 의 아래 표 시 된 값 입 니 다."onclick"등 이벤트 의 익명 함수 에서"i"의 값 을 직접 가 져 올 수 없습니다.즉,요소 가 클릭 되 었 을 때 촉발 하 는 함 수 는'tabs'배열 의 몇 번 째 요소 가 클릭 되 었 는 지 알 수 없습니다.모든 요소 가 이 함 수 를 촉발 할 수 있 기 때 문 입 니 다.그러나 함 수 는'this'를 통 해 어떤 요소 가 클릭 되 었 는 지 알 수 있 습 니 다.이 클릭 된 요 소 는 몇 번 째 이 고 이 클릭 된 요소 의 사용자 정의 값 을 통 해 얻 을 수 있 습 니 다.요소 가 클릭 되 기 전에 이 요소 들 에 게 num(사용자 정의 값)번 호 를 연결 하면'this.num'을 통 해 이 요소 의 번 호 를 얻 을 수 있 습 니 다.이 요소 가'tabs'배열 의 몇 번 째 요소 라 는 것 을 알 수 있다.
3.현재 요소 와 업데이트 요소 의 스타일 수정:
tabs[e_mark].classList.toggle(tabs_checked_style);
tabs[this.num].classList.toggle(tabs_checked_style);
위 에서 말 했 듯 이"e"mark'는 현재 요소 의 번호 이 고'this.num'은 클릭 되 고 새로 선 택 된 요소 의 번호 입 니 다.그러면 요소 가 클릭 되 었 을 때 두 가지 일 을 해 야 합 니 다.1.현재 선택 한 요소 의 스타일 을 일반 스타일 로 복원 합 니 다.2.클릭 한 요소 의 스타일 을 선택 한 스타일 로 변경 합 니 다.
classList 방법 을 결합 하면.list-item-checked 는 선택 되 었 을 때 추 가 된 스타일 입 니 다.선택 한 요 소 는 이 클래스 만 추가 하면 되 고 선택 되 지 않 은 요 소 는 이 클래스 를 제거 합 니 다.
이상 의 js+css 는 태그 내용 전환 기능(인 스 턴 스 설명)을 실현 하 는 것 이 바로 작은 편집 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.여러분 께 참고 가 되 고 저 희 를 많이 사랑 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[2022.04.19] 자바스크립트 this - 생성자 함수와 이벤트리스너에서의 this18일에 this에 대해 공부하면서 적었던 일반적인 함수나 객체에서의 this가 아닌 오늘은 이벤트리스너와 생성자 함수 안에서의 this를 살펴보기로 했다. new 키워드를 붙여 함수를 생성자로 사용할 때 this는...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.