質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

3回答

4031閲覧

要素の一部をハイライトする為に半透明のレイヤーを乗せて一部をクリッピングしてくり抜きたい

goldenb

総合スコア29

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

1クリップ

投稿2020/07/01 07:39

編集2020/07/02 08:14

イメージを添付いたします。
ハイライトしたい位置や大きさが変わるので汎用的に作りたいと考えています。
clip-pathの反転(外側)を使いたいです。

css

1mask-image:radial-gradient()

上記を使うとサイズ、位置共に調整出来て任意の場所をクリッピングマスクできるのですが四角にする方法が分かりませんでした(出来ない?)
**linear-gradient()**にするとサイズ、位置指定が出来ずに困っておいります。

良い方法をご存知の方がいらっしゃいましたらご教授お願いいたします。

イメージ説明

イメージ説明

イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

ブラウザ対応に難がありますが、こういう方法もあるかと思います。(とりあえず、Chromeで確認してください)

サンプル

css

1 backdrop-filter: brightness(200%);

backdrop-filter - CSS: カスケーディングスタイルシート | MDN

投稿2020/07/02 07:17

編集2020/07/02 07:19
Lhankor_Mhy

総合スコア36104

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

goldenb

2020/07/02 08:25

ご回答ありがとうございます。 brightnessを初めて知りました。使ってみて検証してみます! ご教授くださりありがとうございました。
guest

0

シンプルにbackgrandを使えば良いかと^^

html

1<div class="wrap"> 2 <div class="clip"> 3 <p>クリップするテキスト</p> 4 </div> 5 <p>おまけテキスト</p> 6</div>

css

1.wrap { 2 background: linear-gradient(rgba(0,0,0,0.5),rgba(0,0,0,0.5)), url("画像パス") 0 0 no-repeat; 3} 4.clip { 5 transform:translate(〇px, △px); /* 移動したい位置など */ 6 width: ●●px; /* クリップの横幅 */ 7 height: ▲▲px; /* クリップの高さ */ 8 background: url("wrapと同じ画像パス") -△△px -〇〇px no-repeat; 9 /* 画像の起点(左上)がwrapと同じ位置になるよう -△△px -〇〇px で調整 */ 10 11~~ 以下略 padding、margin などお好みで 12}

都度、起点位置を合わせるのは少々面倒かも? ですが
位置やサイズの調整はしやすいと思います。

投稿2020/07/02 07:03

編集2020/07/02 07:17
-millmill-

総合スコア674

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

goldenb

2020/07/02 08:22

ご回答ありがとうございます。 こちらの方法もシンプルに切り取ることができてよかったのですが先ほど追加した画像のようなケースの場合はやはり半透明レイヤーを切り抜く必要があると思うのでもう少し模索してみます。 別の方法がございましたらお知らせいただけると幸いです。 お時間を使っていただき感謝しています。
-millmill-

2020/07/02 08:28 編集

追加画像のような場合は 無理に移動させる必要は無いので transform:translate(〇px, △px); width: ●●px; height: ▲▲px; など不要なスタイルを削除すれば良いのでは? と思います。 後は画像の起点を調整するだけで行けると思います^^;
guest

0

背景画像を設定したブロックに、before疑似要素で半透明の背景色のブロックを作成して重ねて、さらに、after要素で同じ背景画像のブロックを重ねて、それを clip-path 切り取ればどうでしょうか。

html

1<div class="box"> 2</div>

css

1.box { 2 width: 500px; 3 height: 300px; 4 position: relative; 5 background-image: url(画像パス); 6} 7.box::before,.box::after { 8 content: ""; 9 display: block; 10 position: absolute; 11 top: 0; 12 left: 0; 13 right: 0; 14 bottom: 0; 15} 16.box::before { 17 background-color:rgba(0,0,0,0.5); 18} 19.box::after { 20 background-image: url(画像パス); 21 clip-path: inset(30% 20% 30% 40%); /* お好みに切り抜いてください */ 22}

CodePenサンプル

投稿2020/07/01 13:11

編集2020/07/01 13:18
hatena19

総合スコア33715

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

goldenb

2020/07/01 14:34

ご回答ありがとうございます! 確かに画像の一部をハイライトしたい場合記載いただいた方法で出来ますね。 ただ画像の上に要素としてテキストがあり、そのテキストを含めた範囲をハイライトさせたい場合には記載いただいた方法では対応出来ないようです。 黒半透明レイヤーにサイズと位置を任意の数値で穴をあけるのは難しいのでしょうか。 linear-gradientやmask-imageで出来そうな気もするのですがこのような用途で解説している記事を見つける事が出来ず... もし参考になりそうな記事等ございましたらお知らせいただけると幸いです。 私の質問にお時間をとってご回答いただき感謝いたします。
goldenb

2020/07/02 08:13

ご回答ありがとうございます。 記載いただいた方法も参考にさせていただきます。 後出しで申し訳ないのですが追加した画像のようなケースの場合はやはり半透明レイヤーを切り抜く必要があると思うのでもう少し模索してみます。
goldenb

2020/07/02 08:32

ボーダー見落としていました。 このやり方も再現できますね。色々な手段をご教授いただきありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問