2016-12-11 4 views
1

이미지의 오른쪽에 삼각형 화살표를 추가하고 싶습니다. 이미지에 border-radius가 있습니다 : 50 % 화살표로 두 번째 div를 추가하고 그것을 원하는 위치로 이동하여 만들었지 만 두 번째 div를 사용하지 않고 어떻게 올바르게 만들 수 있습니까?어떻게 이미지에 화살표를 추가 할 수 있습니까

이 그것이 어떻게 보이는지 같은 : https://jsfiddle.net/kani339/0xeu28q5/1/

HTML :

<img src="https://www.aviary.com/img/photo-landscape.jpg" class="photo"> 
<div class="arrow"></div> 

CSS :

.photo { 
    border-radius:50%; 
    width: 200px; 
    height: 190px; 
    border: 5px solid #41454f; 
} 

.arrow { 
    position:relative; 
    left:205px; 
    bottom: 115px; 
    width: 0; 
    height: 0; 
    border-top: 15px solid transparent; 
    border-bottom: 15px solid transparent; 
    border-left: 15px solid #41454f; 
} 
+0

당신이 원하는 아래의 데모를 확인? –

+0

@Vadim Ovchinnikov 예, 화살표를 남겨두고 싶지만 다른 div 요소를 사용하지 않습니다. 몇 가지 방법을 추가 할 수 있습니다. 사진 클래스 – Viktor

+0

투명한 중심, 검은 색 테두리 및 흰색 외부 영역이있는 화살표 png 이미지로 테두리를 만들 수 있습니다. 그런 다음이 테두리 프레임 .png를 이미지 위에 오버레이합니다. – zipzit

답변

4

난 당신이 의사 요소와 같은 뭔가를 찾고 있다고 생각? 의사 요소를 사용하여 요소에 요소를 추가 할 수 있습니다. 이 기능을 사용하면 두 번째 문자를 쓰지 않고 추가 요소를 가질 수 있습니다. <div>.

아래 예제는 :before.photo 요소에 사용합니다. 하지만 <img> 태그에서는이 기능이 작동하지 않으므로 이미지를 배경으로 사용해야합니다. 네,`

를 제거`하지만 그대로 화살표를 떠나

.photo { 
 
    border-radius:50%; 
 
    width: 200px; 
 
    height: 190px; 
 
    border: 5px solid #41454f; 
 
    background: url("https://www.aviary.com/img/photo-landscape.jpg") no-repeat center center/cover; 
 
    background-position: initial; 
 
    position: relative; 
 
} 
 

 
.photo::before { 
 
    content: ""; 
 
    position: absolute; 
 
    right: -15px; 
 
    top: 50%; 
 
    transform: translateY(-50%); 
 
    width: 0; 
 
    height: 0; 
 
    border-top: 15px solid transparent; 
 
    border-bottom: 15px solid transparent; 
 
    border-left: 15px solid #41454f; 
 
}
<div class="photo"></div>

+0

그런 배경 이미지를 사용하는 것을 생각하지 않았습니다. 좋은 해결책 +1 – sol

+1

의사/img 문제에 대한 훌륭한 해결책입니다. 포지셔닝을 위해 top과 margin-top 대신에 top : 50 %; 변형 : translateY (-50 %); 이것에 대한 추론은 이미지로 화살표 또는 div의 크기를 변경할 수 있으며 여전히 모든 것을 완벽하게 중심에 놓을 수 있다는 것입니다. 당신은 여기에서 행동으로 볼 수 있습니다 : https://codepen.io/sebastianekstrom/pen/kzEhe/ Top : calc (50 % - 7px); 마진을 포함 할 필요없이 대략 중심에있게 할 것입니다. – DawnPatrol

+0

그래, 그게 더 나은 해결책 @DawnPatrol, 내가 코드를 업데이 트거야 - 감사합니다! – balapa

0

나는 순수 CSS 솔루션의 확실하지 않다.

이 같은 jQuery를 함께 할 수 있습니다

$(function() { 
    $('.photo').after('<div class="arrow"></div>'); 
}); 

Here's a demo

Credit to Christopher Harris

+0

이렇게하면 div 요소가 DOM에 추가됩니다. –

관련 문제