애플의 오버레이는 단순한 투명성이 아닙니다. CSS와 JS로이 효과를 얻는 방법에 대한 아이디어가 있습니까?
답변
CSS3로 가능합니다 :
#myDiv {
-webkit-filter: blur(20px);
-moz-filter: blur(20px);
-o-filter: blur(20px);
-ms-filter: blur(20px);
filter: blur(20px);
opacity: 0.4;
}
예를 들어 여기 => jsfiddle
답변
당신이 나를 시험 해보고 싶었으므로 여기에서 예제를 확인하십시오.
http://codepen.io/Edo_B/pen/cLbrt
사용 :
- HW 가속 CSS 필터
- 클래스 할당 및 화살표 키 이벤트를위한 JS
- 이미지 CSS 클립 속성
그게 다야.
캔버스를 사용하여 현재 돔을 복사하고 흐리게 만드는 경우 모든 화면에서 동적으로 수행 할 수 있다고 생각합니다.
답변
[편집] 미래 (모바일) Safari 9에는 -webkit-backdrop-filter
정확히이 기능이 있을 것 입니다. 참조 이제가 보여 드리기 위해 만든 펜을 .
나는 지난 4 주 동안 이것에 대해 생각 하고이 솔루션을 생각해 냈습니다.
[편집] CSS-Tricks 에 대해 더 깊이있는 글을 썼습니다
이 기술은 CSS 지역을 사용 하므로 현재 브라우저 지원이 최고가 아닙니다. ( http://caniuse.com/#feat=css-regions )
이 기술의 핵심은 CSS Region을 사용하여 컨텐츠를 레이아웃에서 분리하는 것입니다. 먼저 .content
요소를 정의한 flow-into:content
다음 적절한 구조를 사용하여 머리글을 흐리게합니다.
레이아웃 구조 :
<div class="phone">
<div class="phone__display">
<div class="header">
<div class="header__text">Header</div>
<div class="header__background"></div>
</div>
<div class="phone__content">
</div>
</div>
</div>
이 레이아웃의 두 가지 중요한 부분이 있습니다 .header__background
및.phone__content
– 이러한 내용이 비록 흐름을해야하는 컨테이너입니다.
CSS 지역을 사용하면 다음과 같이 간단합니다 flow-from:content
( .content
이름이 지정된 지역으로 유입됩니다 content
)
이제 까다로운 부분이 있습니다. .header__background
콘텐츠가 흐려지는 부분이기 때문에 항상 콘텐츠를 흐르게하고 싶습니다 . (사용 webkit-filter:blur(10px);
)
이는하여 수행됩니다 내용이 항상 있지만 유입 될 수 있도록 . 이 변환은 항상 헤더 아래에 일부 내용을 숨 깁니다. 이것을 고치는 것은 쉬운 추가입니다transfrom:translateY(-$HeightOfTheHeader)
.content
.header__background
.header__background:before{
display:inline-block;
content:'';
height:$HeightOfTheHEader
}
변환을 수용합니다.
이것은 현재 일하고 있습니다 :
- Chrome 29 이상 ( ‘experimental-webkit-features’/ ‘enable-experimental-web-platform-features’사용)
- 사파리 6.1 씨앗 6
- iOS7 ( 느리게 스크롤 없음 )
답변
이것은 요소 스타일 속성 덕분에 FireFox에서 가능 합니다.
이 실험적인 속성을 사용하면 HTML 내용을 배경 이미지로 사용할 수 있습니다. 따라서 배경을 만들려면 세 가지 오버레이가 필요합니다.
- 배경이 단색 인 간단한 오버레이 (실제 오버레이 내용을 숨기려면).
-moz-element
내용을 설정 하는 배경으로 오버레이 합니다. FX는이filter: blur()
속성을 지원하지 않으므로 SVG가 필요합니다.- 흐릿하지 않은 컨텐츠로 오버레이합니다.
따라서 다음과 같이 정리하십시오.
SVG 흐림 필터 (FX에서 작동, 다른 브라우저에서 사용 가능 filter:blur()
) :
<svg>
<defs>
<filter id="svgBlur">
<feGaussianBlur stdDeviation="10"/>
</filter>
</defs>
</svg>
CSS 흐림 스타일 :
.behind-blur
{
filter : url(#svgBlur);
opacity: .4;
background: -moz-element(#content);
background-repeat: no-repeat;
}
마지막으로 3 개의 레이어 :
<div class="header" style="background-color: #fff"> </div>
<div class="header behind-blur"> </div>
<div class="header">
Header Text, content blurs behind
</div>
그런 다음이 주위를 이동하려면 background-position
(jQuery의 샘플이지만 아무것도 사용할 수 있습니다)를 설정하십시오.
$('.behind-blur').css({
'background-position': '-' + left + 'px -' + top + 'px'
});
답변
이 데모 페이지를 확인하십시오.
이 데모는 html2canvas를 사용하여 문서를 이미지로 렌더링합니다.
http://blurpopup.labs.daum.net/
- “팝업 표시”링크를 클릭하면 ‘makePopup’기능이 호출됩니다.
- ‘makePopup’은 문서를 이미지로 렌더링하기 위해 html2canvas 를 실행 합니다.
- 이미지는 data-url 문자열로 변환되고 팝업의 배경 이미지로 페인트됩니다.
- 팝업의 bg가 흐려짐 -webkit-filter : blur에 흐려짐
- 팝업을 문서에 추가하십시오.
- 팝업을 드래그하는 동안 자체 배경 위치가 변경됩니다.
답변
다른 날에 찾은이 펜은 CSS와 21 줄의 자바 스크립트로 아름답게하는 것처럼 보입니다. 이것을 찾을 때까지 cloneNode js 명령에 대해 들어 보지 못했지만 완전히 필요한 부분을 처리했습니다.
http://codepen.io/rikschennink/pen/zvcgx
세부 사항 : A. 기본적으로 콘텐츠 div를보고 그 위에 cloneNode를 호출하여 페이지 위에 앉아 overflow : hidden 헤더 객체 안에 배치하는 복제본을 만듭니다. B. 그런 다음 단순히 스크롤을 수신하여 두 이미지가 일치하고 헤더 이미지를 흐리게 만듭니다. annnnd BAM. 효과가 달성되었습니다.
언어에 약간의 스크립트 기능이 내장 될 때까지 CSS에서 실제로 완벽하게 수행 할 수는 없습니다.
답변
- 흐리게하려는 요소를 복제
- 맨 위에 표시하려는 요소 (서리로 덥은 창)에 추가
- 웹킷 필터로 복제 된 요소 흐림
- 복제 된 요소가 절대 위치에 있는지 확인
- 원래 요소의 부모를 스크롤 할 때 scrollTop 및 scrollLeft를 잡습니다.
- requestAnimationFrame을 사용하여 x 및 y 값을 가진 3d를 scrollTop 및 scrollLeft로 변환하도록 webkit-transform을 동적으로 설정하십시오.
예를 들면 다음과 같습니다.
- 웹킷 브라우저에서 열어야합니다
- 전화보기 내부 스크롤 (애플 마우스로 가장 좋습니다 …)
- 바닥 글 흐리게 표시