2016-12-11 5 views
1

画像の右側に三角形の矢印を追加したい場合は、画像にborder-radius:50% を追加します。どのように私は正しく2番目の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画像で枠線を作成できますこのボーダーフレームをイメージ上にオーバーレイします。 – zipzit

答えて

4

私はあなたが擬似要素のようなものを探していると思いますか?擬似要素を使うことで、要素に要素を追加することができます。この機能を使用すると、2番目の書き込みなしで追加の要素を持つことができます<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:50%を使用することをおすすめします。変換する:translateY(-50%);この背後にある理由は、画像で矢印またはdivのサイズを変更しても、すべてを完全に中央に置くことができるということです。あなたはここで実際にそれを見ることができます:https://codepen.io/sebastianekstrom/pen/kzEhe/トップ: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

DOMに追加のdiv要素を追加します。 –

関連する問題