> 웹 프론트엔드 > CSS 튜토리얼 > CSS3 섀도우 박스-섀도 사용법 및 기술 요약

CSS3 섀도우 박스-섀도 사용법 및 기술 요약

高洛峰
풀어 주다: 2017-02-21 11:17:47
원래의
1480명이 탐색했습니다.

text-shadow는 텍스트에 그림자 효과를 추가하는 것이고, box-shadow는 요소 블록에 주변 그림자 효과를 추가하는 것입니다. HTML5CSS3의 인기로 인해 이 특수 효과의 사용이 점점 더 보편화되고 있습니다.

기본 구문은 {box-shadow:[inset] x-offset y-offset Blur-radius Spread-radiuscolor}

객체 선택기 {box-shadow:[투영 방법] X축 오프셋 Y 축 오프셋 그림자 흐림 반경그림자 확장 반경그림자 색상}

상자 - 매개변수 설정 값 그림자 속성:

그림자 유형: 이 매개변수는 선택 사항입니다. 값이 설정되지 않은 경우 기본 투영 방법은 외부 그림자입니다. 고유 값 "삽입"을 사용하면 투영은 내부 그림자입니다.

X-오프셋: 그림자 수평 오프셋, 해당 값은 양수이거나 부정적인 . 값이 양수이면 그림자는 개체의 오른쪽에 있습니다.

Y-오프셋: 그림자의 수직 오프셋입니다. 그 값은 양수일 수도 있고 음수일 수도 있습니다. 양수 값이면 그림자는 개체의 아래쪽에 있습니다. 값이 음수이면 그림자는 개체의 위쪽에 있습니다.

그림자 흐림 반경: 이 매개변수는 선택 사항입니다. 값이 0이면 그림자에 흐림 효과가 없음을 의미합니다.

그림자 확장 반경: 이 매개변수는 선택 사항입니다. 해당 값은 양수 또는 음수일 수 있습니다. 값이 양수이면 전체 그림자가 확장되고, 값이 음수이면 축소됩니다.

그림자 색상: 이 매개변수는 선택 사항입니다. 색상을 설정하지 않으면 브라우저는 기본 색상을 사용하게 되지만, 각 브라우저의 기본 색상이 일치하지 않는 경우가 많습니다. 특히 webkit 커널 아래의 Safari 및 Chrome 브라우저에서는 투명색, Firefox/Opera 아래에서는 검정색( 검증됨) 이 매개변수는 생략하지 않는 것이 좋습니다.

브라우저 호환성:

CSS3阴影 box-shadow的使用和技巧总结

다양한 주류 브라우저와 호환되고 이러한 주류 브라우저의 하위 버전을 지원하기 위해

는 Webkit을 기반으로 합니다. Chrome 및 Safari와 같은 브라우저에서 box-shadow 속성을 사용하면 -webkit-box-shadow 형식으로 속성 이름을 작성해야 합니다. Firefox 브라우저는 -moz-box-shadow 형식으로 작성되어야 합니다.

.box-shadow{  
   //Firefox4.0-  
  -moz-box-shadow:投影方式 X轴偏移量 Y轴偏移量阴影模糊半径 阴影扩展半径 阴影颜色;  
   //Safariand Google chrome10.0-  
  -webkit-box-shadow:投影方式 X轴偏移量 Y轴偏移量阴影模糊半径 阴影扩展半径 阴影颜色;  
  //Firefox4.0+、 Google chrome 10.0+ 、 Oprea10.5+ and IE9  
  box-shadow:  投影方式 X轴偏移量 Y轴偏移量 阴影模糊半径 阴影扩展半径 阴影颜色;  
}
로그인 후 복사

참고: 편의상 다음 CSS 속성 중 일부에서는 box-shadow 속성만 쓰고 -moz- 및 -webkit- 접두사는 쓰지 않습니다. 그것을 사용하는 것을 잊지 마세요.

box-shadow의 특성을 더 명확하게 이해하려면 몇 가지 작은

테스트를 수행하여 효과를 확인하세요.

관련 코드:

<!DOCTYPE html>  
<html>  
<head>  
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">  
<title>CSS3属性:box-shadow测试</title>  
<script type="text/javascript" src="js/jquery.min.js"></script>  
<script type="text/javascript" src="js/jquery.boxshadow.js"></script>  
<style type="text/css">  
.box-shadow-1{  
-webkit-box-shadow: 3px 3px 3px;  
-moz-box-shadow: 3px 3px 3px;  
box-shadow: 3px 3px 3px;  
}  
.box-shadow-2{  
-webkit-box-shadow:0 0 10px #0CC;  
-moz-box-shadow:0 0 10px #0CC;  
box-shadow:0 0 10px #0CC;  
}  
.box-shadow-3{  
-webkit-box-shadow:0 0 10px rgba(0, 204, 204, .5);  
-moz-box-shadow:0 0 10px rgba(0, 204, 204, .5);  
box-shadow:0 0 10px rgba(0, 204, 204, .5);  
}  
.box-shadow-4{  
-webkit-box-shadow:0 0 10px 15px #0CC;  
-moz-box-shadow:0 0 10px 15px #0CC;  
box-shadow:0 0 10px 15px #0CC;  
}  
.box-shadow-5{  
-webkit-box-shadow:inset 0 0 10px #0CC;  
-moz-box-shadow:inset 0 0 10px #0CC;  
box-shadow:inset 0 0 10px #0CC;  
}  
.box-shadow-6{  
box-shadow:-10px 0 10px red, /*左边阴影*/  
10px 0 10px yellow, /*右边阴影*/  
0 -10px 10px blue, /*顶部阴影*/  
0 10px 10px green; /*底边阴影*/  
}  
.box-shadow-7{  
box-shadow:0 0 10px 5px black,  
0 0 10px 20px red;  
}  
.box-shadow-8{  
box-shadow:0 0 10px 20px red,  
0 0 10px 5px black;  
}  
.box-shadow-9{  
box-shadow: 0 0 0 1px red;  
}
.obj{  
width:100px;  
height:100px;  
margin:50px auto;  
background:#eee;      
}  
.outer{  
width: 100px;  
height: 100px;  
border: 1px solid red;  
}  
.inner{  
width: 60px;  
height: 60px;  
background-color: red;  
-webkit-box-shadow: 50px 50px blue;  
-moz-box-shadow: 50px 50px blue;  
box-shadow: 50px 50px blue;  
}  
</style>  
</head>  
<body>  
<p class="obj box-shadow-1"></p>  
<p class="outer">  
<p class="inner"></p>  
</p>  
<p class="obj  box-shadow-2" ></p>  
<p class="obj  box-shadow-3" ></p>  
<p class="obj  box-shadow-4" ></p>  
<p class="obj  box-shadow-5" ></p>  
<p class="obj  box-shadow-6" ></p>  
<p class="obj  box-shadow-7" ></p>  
<p class="obj  box-shadow-8" ></p>  
<p class="obj  box-shadow-9" ></p>  
<script type="text/javascript">  
$(document).ready(function(){  
if($.browser.msie) {  
$(&#39;.obj&#39;).boxShadow(-10,-10,5,"#0cc"); //obj元素使用了box-shadow  
}  
});  
</script>    
</body>  
</html>
로그인 후 복사

결론:

1) .box-shadow-1의 효과로부터, 그림자 색상 속성을 지정하지 않고 그림자가 다음과 같다는 결론을 내릴 수 있습니다. 웹킷 커널 아래의 사파리 및 크롬 브라우저 아래에서는 투명한 색상으로 나타나고 Firefox/Opera에서는 검은색으로 나타납니다.

CSS3阴影 box-shadow的使用和技巧总结

2) 두 개의 내부 및 외부 p 블록, 내부 및 외부 비교에서 box-shadow를 지원하는 모든 주류 브라우저는 다음과 같이 동작합니다. 내부 그림자가 돌파합니다. 외부 레이어 컨테이너는 전체 그림자 효과를 나타냅니다. W3C 표준은 다이어그램을 사용하여 상자 그림자의 원리와 성능을 설명합니다.

CSS3阴影 box-shadow的使用和技巧总结

그림에서 우리는 이해할 수 있습니다. 둥근 모서리 테두리 반경, 그림자 확장 반경, 그림자 흐림 반경 및 패딩은 객체 그림자에 영향을 줍니다. border-radius의 0이 아닌 값은 같은 방식으로 그림자의 모양에 영향을 주지만 border-image는 객체 그림자의 모양에 영향을 주지 않습니다. 객체 그림자는 상자 모델과 동일한 수준을 갖습니다. 외부 그림자는 객체 배경 아래에 있고 내부 그림자는 테두리 아래와 배경 위에 있습니다. 우리는 기본적으로 배경 이미지가 배경색 위에 있다는 것을 알고 있습니다. 따라서 전체 계층 구조는 테두리>내부 그림자>배경 이미지>배경색>외부 그림자입니다.

3) .box-shadow-2부터 .box-shadow-5까지의 효과를 통해 box-shadow 값의 역할을 이해할 수 있습니다.

.box-shadow-2는 오프셋이 없는 xy이고, 그림자 크기는 10px이고, 확장 반경이 없으며, 색상 #0CC는 rgba(0, 204,204, 1) 여기서는 색상 HEX 값을 사용하고 있습니다. box-shadow-3이 있는 동안 효과는

CSS3阴影 box-shadow的使用和技巧总结

입니다. box-shadow-2 효과를 기반으로 rgba 색상 값이 적용되며, box-shadow 그림자에 알파 투명도 효과가 추가된다는 장점이 있습니다. 효과:

. box-shadow-4는 box-shadow-2 효과를 기반으로 15px의 그림자 확장 반경을 추가합니다. CSS3阴影 box-shadow的使用和技巧总结

.box-shadow-5는 box-shadow-2의 효과를 기반으로 외부 그림자를 내부 그림자로 설정합니다. CSS3阴影 box-shadow的使用和技巧总结

4) box-shadow-6 요소는 쉼표로 구분된 여러 그림자를 사용합니다. 물체의 네 면에 그림자 효과를 설정하려면 x-오프셋과 y-오프셋의 양수 값과 음수 값을 변경하여 이를 달성합니다. x-오프셋이 음수 값일 경우 왼쪽 그림자가 생성됩니다. . 양수 값이면 오른쪽 그림자가 생성됩니다. 양수 값은 아래쪽 그림자를 생성하고 음수 값은 위쪽 그림자를 생성합니다. 그리고 흐림 반경을 0으로 설정합니다. 0으로 설정하지 않으면 다른 세 면에도 그림자가 생깁니다. 주의가 필요합니다! CSS3阴影 box-shadow的使用和技巧总结

이 글은 잘못되었음을 주의하세요: {box-shadow:-10px 0 10px red, box-shadow:10px 0 10px blue,box-shadow:0 -10px 10px yellow,box-shadow:0 10px 10px green}CSS3阴影 box-shadow的使用和技巧总结

여기에는 멀티 섀도우 주문 문제도 있습니다. 동일한 요소에 여러 그림자 속성을 사용하는 경우 순서에 주의해야 합니다. 예를 들어 box-shadow-7은 다른 흐림 값으로 설정됩니다.

.box-shadow-7{

box-shadow:0 0 10px 5px 검정,

0 0 10px 20px red;

}

계단식 시퀀스 효과를 볼 수 있습니다:

두 가지를 조정하면 그림자 효과 이제 다음과 같이 변경합니다: CSS3阴影 box-shadow的使用和技巧总结

.box-shadow-8{

box-shadow:0 0 10px 20px 빨간색,

0 0 10px 5px black;

}

은 빨간색 그림자 효과만 표시합니다. 빨간색 그림자 레이어가 맨 위에 있고 흐림 반경이 커서 그 뒤의 검은 그림자를 완전히 차단하기 때문입니다.

결론: 앞 그림자의 블러 값이 뒤 그림자의 블러 값보다 작으면 앞 그림자가 위에 표시됩니다. 앞 그림자의 흐림 값이 뒤 그림자의 흐림 값보다 크면 앞 그림자가 뒤 그림자 효과를 덮게 됩니다. CSS3阴影 box-shadow的使用和技巧总结

4) 테두리 같은 테두리 효과 (그림자 확장 반경 및 그림자 색상만 설정)

box-shadow-9가 나타내는 효과는 border:1px solid red와 유사하지만, box-shadow의 효과는 테두리 높이보다 정확히 1확장 반경이 큰 개체 높이의 테두리 효과와 다릅니다. . 그리고 섀도우는 페이지의 레이아웃에 영향을 미치지 않으며, 이는 Firebug 아래의 레이아웃 다이어그램을 보면 확인할 수 있습니다.

CSS3阴影 box-shadow的使用和技巧总结

5) ie에서 css3을 시뮬레이션합니다. box-shadow그림자 효과

방법 1: IE 🎜>그림자필터

기본 구문

: filter:progid:DXImageTransform.Microsoft.Shadow(color='색상 값', 방향 =그림자 각도(숫자) 값),강도=그림자 반경(숫자 값));

참고

: 이 필터는 배경 속성과 함께 사용해야 합니다. 그렇지 않으면 필터가 유효하지 않습니다. IE에서 CSS3의 box-shadow(그림자) 코드 시뮬레이션:


.box-shadow{

filter: progid: DXImageTransform.Microsoft.Shadow(color='#969696',Direction=135, Strength=5);/*for ie6,7,8*/

배경색

: #ccc ; -moz-box-shadow:2px 2px 5px #969696;/*firefox*/

-webkit-box-shadow:2px 2px 5px #969696;/*webkit*/

box-shadow:2px 2px 5px #969696;/*opera 또는 ie9*/

} 주제에서는 다음과 같이 처리했습니다.

[css ]

일반 사본 보기

li.blk-item{

너비

:423px;
높이

:229px; 🎜>

패딩

:8px;

여백

:2px 18px

테두리:1px solid #d3c998;

 border-radius:2px; 방향=135,강도=5);/*for ie6,7,8*/

배경- 색상

: #fff; -moz-box-shadow:2px 2px 5px#d3c998;/*firefox*/

-webkit-box-shadow:2px 2px 5px#d3c998 ;/*webkit*/ box-shadow:2px 2px 5px #d3c998;/*opera 또는 ie9*/

}

방법 2: 일부

js

.htc

hack

파일은

에서

IE

그림자 효과를 구현할 수 있습니다.


ie-css3.htc는 IE 브라우저가 box-shadow뿐만 아니라 IE 브라우저가 둥근 모서리 속성 border -radius를 비롯한 일부 CSS3 속성을 지원할 수 있도록 하는 htc 파일입니다. 및 텍스트 그림자 속성 text-shadow.

사용 방법: 다운로드하여 서버 디렉토리에 넣습니다.

에 다음 코드를 작성합니다. The 이 스크립트의 단점은 IE가 box-shadow 값의 일부만 지원한다는 것입니다. 참고: 이 htc 파일을 사용한 후 box-shadow, -moz-box-shadow 또는 -webkit-box-shadow가 CSS에 작성되어 있는 한 어느 쪽이든 IE 렌더링합니다. 이 htc 파일을 사용할 때는 다음과 같이 box-shadow를 작성할 수 없습니다: 0 0 10px red; 대신, box-shadow: 0px 0px 10px red여야 합니다. 그렇지 않으면 IE에서 실패합니다. 은 RGBA 값의 알파 투명도를 지원하지 않습니다.

은 내부 그림자 삽입을 지원하지 않습니다.

섀도우 확장은 지원하지 않습니다.

인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿