2017-09-14 12 views
0

특정 요소에 대해을 제외한 전체 창 앞에 반투명 회색 오버레이 (또는 마스크?)를 그려서 페이지의 임의의 HTML 요소에 대해주의를 기울이고 싶습니다. 즉, 특정 요소의 경계에서 오버레이에 "구멍"이있을 것입니다."구멍"이있는 반투명 오버레이를 표시하는 React 패키지가 있습니까?

나는 요소가있을 사전을 알 수 없으므로 오버레이를 동적으로 생성해야합니다.

모양이 직사각형이어야하는 것이 맞습니다.

깜박이는 빨간색 점이 올라 오면 react-joyridereact-joyride demo의 React 패키지 react-joyride에서이 동작의 예가 표시됩니다.

+0

는 나도 몰라,하지만 당신은 PNG 투명 이미지로 쉽게이를 수 있으며, 고정 된 위치 된 요소. – lilezek

+2

다른 "상자"와 같은 수준의 오버레이를 간단하게 구현할 수 있습니다. 그런 다음 이벤트 (클릭, 마우스 오버 또는 기타)에 따라 오버레이를 표시하고 위에 표시하려는 요소에 적절한 z- 인덱스를 설정합니다. – Sotiris

+1

왜 당신은 정확하게 반응하는 즐거움을 사용하지 않습니까? – bennygenel

답변

0

아니 반응 구성 요소를 (내가 과거에 일을 찾고 있었다 어떤을 찾을 수 없습니다) (이, 사람이이 개념의 이름에 대한 통찰력을 가지고?에 대한 구글 힘든 일입니다)하지만, 이것은 당신에게 해당 기능 생성하는 방법의 일반적인 아이디어를 제공해야합니다 : 어떤 패키지를 반응에 대해

overlay = document.getElementById('overlay'); 
 
overlay.style.height = document.body.scrollHeight + 'px'; 
 
overlay.querySelector('.bottom').style.height = (document.body.scrollHeight - 400) + 'px';
html, body { 
 
    padding: 0; 
 
    margin: 0; 
 
} 
 
h1, h2, h3, p { 
 
    margin: 0; 
 
    padding: 15px 0; 
 
} 
 

 
.overlay { 
 
    position: absolute; 
 
    width: 100%; 
 
    min-height: 100%; 
 
    left: 0; 
 
    top: 0; 
 
    z-index: 1000; 
 
} 
 
.overlay div { 
 
    background: rgba(0, 0, 0, 0.3); 
 
    position: absolute; 
 
    width: 100%; 
 
    height: 100%; 
 
} 
 
.overlay .top { 
 
    height: 200px; 
 
    top: 0; 
 
} 
 
.overlay .middle { 
 
    height: 200px; 
 
    top: 200px; 
 
    background: none; 
 
} 
 
.overlay .middle .left { 
 
    width: 150px; 
 
} 
 
.overlay .middle .center { 
 
    width: 200px; 
 
    height: 200px; 
 
    margin: 0 auto; 
 
    overflow: hidden; 
 
    left: 150px; 
 
    background: none; 
 
} 
 
.overlay .middle .center:after { 
 
    content: ''; 
 
    position: absolute; 
 
    left: 0px; 
 
    top: 0; 
 
    border-radius: 100%; 
 
    width: 200px; 
 
    height: 200px; 
 
    box-shadow: 0px 0px 0px 100px rgba(0, 0 ,0, 0.3); 
 
} 
 
.overlay .middle .right { 
 
    width: calc(100% - 150px - 200px); 
 
    left: calc(150px + 200px); 
 
} 
 
.overlay .bottom { 
 
    top: calc(200px + 200px); 
 
}
<div> 
 
    <h2>What is Lorem Ipsum?</h2> 
 
    <p><strong>Lorem Ipsum</strong> is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.</p> 
 
</div> 
 
<div> 
 
    <h2>Why do we use it?</h2> 
 
    <p>It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like).</p> 
 
</div> 
 
<br> 
 
<div> 
 
    <h2>Where does it come from?</h2> 
 
    <p>Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32.</p> 
 
    <p>The standard chunk of Lorem Ipsum used since the 1500s is reproduced below for those interested. Sections 1.10.32 and 1.10.33 from "de Finibus Bonorum et Malorum" by Cicero are also reproduced in their exact original form, accompanied by English versions from the 1914 translation by H. Rackham.</p> 
 
</div> 
 
<div> 
 
<h2>Where can I get some?</h2> 
 
<p>There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text. All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as necessary, making this the first true generator on the Internet. It uses a dictionary of over 200 Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc.</p> 
 
</div> 
 
<div id="overlay" class="overlay"> 
 
    <div class="top"></div> 
 
    <div class="middle"> 
 
    <div class="left"></div> 
 
    <div class="center"></div> 
 
    <div class="right"></div> 
 
    </div> 
 
    <div class="bottom"></div> 
 
</div>