2016-10-25 8 views
2

赤のコンテナ要素は、テキストではなく画像の幅にしたいが、幅が広いのでテキストのサイズに及ぶ。これを達成する方法は?CSS:画像が小さくても画像の周りにコンテナ要素を囲み、テキストは囲みませんか?

https://jsfiddle.net/strz3stt/

注:私は既存のマークアップで動作するようにしようとしているので、私はマークアップを編集することはできませんだけとCSSでこれを行うための方法が必要です。

HTML:

<span class="wrapper"> 
    <img src="https://placekitten.com/g/400/300"> 
    <a href="http://google.com">Google Google Google Google Google Google Google Google Google Google Google Google Google Google Google Google Google Google Google Google Google Google Google Google Google Google Google Google Google Google Google Google Google Google Google </a> 
</span> 

CSS:

.wrapper { 
    border: 3px solid red; 
    display: inline-block; 
} 
.wrapper img { 
    border: 1px solid blue; 
} 
.wrapper a { 
    display: block; 
    border: 1px solid green; 
} 
+1

イメージのサイズをご存知ですか? –

+0

@VladTarniceruいいえ、WYSIWYG編集者が選んだもので、サイズは自由です。残念ながら、ラッパーに固定幅を与えることはできません。 – TK123

答えて

5

それは画像の幅へのリンクのテキストを折り返すためにあなたの意思だと仮定すると、何を行うことができますすることにラッパーを回しています表。 width: 1pxを設定すると、幅をコンテンツの幅にすることができます。
(これもきちんとテキスト内の単語が画像よりも広いことを起こるケースを処理します。)

.wrapper { 
 
    border: 3px solid red; 
 
    display: table; width: 1px; 
 
} 
 
.wrapper img { 
 
    border: 1px solid blue; 
 
    max-width: calc(100vw - 22px); 
 
} 
 
.wrapper a { 
 
    display: block; 
 
    border: 1px solid green; 
 
}
<span class="wrapper"> 
 
    <img src="https://placekitten.com/g/400/300"> 
 
    <a href="http://google.com">Google Google Google Google Google Google Google Google Google Google Google Google Google Google Google Google Google Google Google Google Google Google Google Google Google Google Google Google Google Google Google Google Google Google Google </a> 
 
</span>

また、あなたは<figure>ではなく<span>を使用することを検討すべきですラッパーのために。これはまさに<figure>の対象です。

+0

これは質問に答えますが、実際の例では画像の応答幅は最大100%です。上記の例にそれを適用すると、画像が歪んでしまいます。 https://jsfiddle.net/strz3stt/2/ もちろんこれは完璧な意味合いがありますが、あなたのコードは最大幅100%で動作しますか?マークアップを編集していくつかの要素を追加することで簡単に行うことができますが、前述のようにマークアップを変更することはできず、CSSだけで行う必要があります。 – TK123

+1

申し訳ありませんが、私はずっと時間がかかっていましたが、解決策は '% 'ではなく' vw'でmax-widthを使うことだけです。更新された回答を参照してください。実際には、私は 'calc'を使う必要がありました。なぜなら、100vwにはボディのマージンが含まれていたからです。あなたは必要な方法で動作させるためにいくつかの微妙な調整を行う必要があります。 –

+0

ありがとう!よく働く :) – TK123

関連する問題