CSS3 の新しい属性 object-view-box について 1 つの記事で学習します

青灯夜游
リリース: 2022-06-13 10:17:24
転載
2378 人が閲覧しました

この記事では、CSS3 の新機能 object-view-box 属性を深く理解し、新しい属性の役割と使用法について説明します。皆様のお役に立てれば幸いです。

CSS3 の新しい属性 object-view-box について 1 つの記事で学習します

開発中、私は常に、画像をトリミングして必要な方向に配置できるネイティブ CSS 方法があればいいのにと思っていました。これは、後で説明するように、追加の HTML 要素とさまざまな CSS プロパティを使用することで実現できます。

この記事では、今年の初めに Jake Archibald によって提案された新しい CSS プロパティ object-view-box について説明します。これにより、<video></video> など、置換された HTML 要素を切り取ったりサイズ変更したりすることができます。 [推奨される学習: css ビデオ チュートリアル ]

質問

以下の例には、トリミングする必要がある画像があります。画像の特定の部分のみが必要であることに注意してください。

CSS3 の新しい属性 object-view-box について 1 つの記事で学習します

現時点では、次のいずれかの方法でこの問題を解決できます。

  • <img alt="CSS3 の新しい属性 object-view-box について 1 つの記事で学習します" > を使用し、追加の要素でラップします。
  • 画像を background-image として使用し、位置と位置を変更します。 size

追加の要素でラップされています

これは、この問題を解決する一般的な方法です。手順は次のとおりです:

  • 画像を別の要素で囲みます (この場合は <figure></figure>)。
  • 追加 position:relativeoverflow:hidden
  • 画像に position:absolute を追加し、配置を変更しましたこの結果を達成するためにサイズ値が調整されました。
<figure>
    <img src="img/brownies.jpg" alt="">
</figure>
ログイン後にコピー
figure {
    position: relative;
    width: 300px;
    aspect-ratio: 1;
    overflow: hidden;
    border-radius: 15px;
}

img {
    position: absolute;
    left: -23%;
    top: 0;
    right: 0;
    bottom: 0;
    width: 180%;
    height: 100%;
    object-fit: cover;
}
ログイン後にコピー

画像を背景として配置

このソリューションでは、<div> を使用して画像を背景として設定し、位置とサイズを変更します。価値。

<div class="brownies"></div>
ログイン後にコピー
.brownies {
  width: 300px;
  aspect-ratio: 3 / 2;
  background-image: url("brownies.jpg");
  background-size: 700px auto;
  background-position: 77% 68%;
  background-repeat: no-repeat;
}
ログイン後にコピー

それは問題ありませんが、上記の内容を <img alt="CSS3 の新しい属性 object-view-box について 1 つの記事で学習します" > に適用したい場合はどうすればよいでしょうか?それが object-view-box の機能です。

Object-View-Box の紹介

属性 object-view-box Chrome 104 でサポートされる可能性があります。 Chrome Canary で利用できるようになりました。

CSS 仕様による (https://drafts.c​​sswg.org/css-images-4/#the-object-view-box)

object-view-box 属性は、要素のコンテンツをズームまたはパンする <svg viewBox> 属性と同様に、要素の「ビュー ボックス」を指定します。

この属性の値は <basic-shape-rect> = <inset()> | <rect()> | <xywh()> 。この記事のデモでは、inset() の使用法に焦点を当てます。

この問題に戻りましょう。

object-view-box を使用すると、inset を使用して 4 つの側面 (上、右、下、左) から長方形を描画し、object-fit を適用できます。変形を避けるために をカバーしてください。

<img src="img/brownies.jpg" alt="">
ログイン後にコピー
img {
    aspect-ratio: 1;
    width: 300px;
    object-view-box: inset(25% 20% 15% 0%);
}
ログイン後にコピー
ログイン後にコピー

これはどのように行われますか?下を見てみましょう。

画像の固有サイズ

固有サイズは、デフォルトの画像の幅と高さです。作業している画像サイズは 1194 × 1194 px.

img {
    aspect-ratio: 1;
    width: 300px;
}
ログイン後にコピー

です。上記の CSS を使用すると、画像のレンダリング サイズは 300×300px になります。

CSS3 の新しい属性 object-view-box について 1 つの記事で学習します

# 私たちの目標は、固有の画像上に長方形を描くことです。これを行うには、

inset()values を使用します。

inset の使用

inset()値は元の画像の幅と高さに基づくため、トリミングされた画像になります。画像。これは、margin または padding の処理と同様に、埋め込み四角形を描画し、4 つのエッジを制御するのに役立ちます。

inset 値はインセット四角形を定義します。 margin または padding で行ったのと同じように、4 つのエッジを制御できます。以下の例では、カードのすべての端に 20px のインセットがあります。

CSS3 の新しい属性 object-view-box について 1 つの記事で学習します

オブジェクト ビュー ボックスに戻る:

img {
    aspect-ratio: 1;
    width: 300px;
    object-view-box: inset(25% 20% 15% 0%);
}
ログイン後にコピー
ログイン後にコピー

上記の背後にあるもの、値は次のとおりです。

25%、20%、15%0% はそれぞれ上辺、右辺、下辺、左辺を表します。

CSS3 の新しい属性 object-view-box について 1 つの記事で学習します

修复图像失真

如果图像的尺寸是正方形的,那么裁剪后的结果将是变形的。

CSS3 の新しい属性 object-view-box について 1 つの記事で学習します

这可以使用 object-fit 属性来解决。

img {
    aspect-ratio: 1;
    width: 300px;
    object-view-box: inset(25% 20% 15% 0%);
    object-fit: cover;
}
ログイン後にコピー

CSS3 の新しい属性 object-view-box について 1 つの記事で学習します

放大或缩小

我们可以使用 inset 来放大或缩小图像。根据我的测试,过渡或动画不能与object-view-box工作。

CSS3 の新しい属性 object-view-box について 1 つの記事で学習します

我们也可以用一个负的 inset 值来缩小。

CSS3 の新しい属性 object-view-box について 1 つの記事で学習します

想象一下,这对于能够缩放图像是多么有用,而不需要用一个额外的元素来包装它。

事例

地址:https://codepen.io/shadeed/pen/yLvXJRd

期待这个新的属于尽快来了!

作者:ishadeed 

来源:ishadeed

原文:https://ishadeed.com/article/css-object-view-box/

(学习视频分享:web前端

以上がCSS3 の新しい属性 object-view-box について 1 つの記事で学習しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:segmentfault.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート