Jadual Kandungan
Teknik kehilangan gigi gergaji kecerunan CSS
Apakah itu aliasing kecerunan?
Penyelesaian Mudah
Kaedah anti-aliasing yang lebih maju
最后
Rumah hujung hadapan web tutorial css Contoh terperinci tentang cara menyelesaikan masalah pengalianan kecerunan CSS!

Contoh terperinci tentang cara menyelesaikan masalah pengalianan kecerunan CSS!

Nov 25, 2022 pm 04:43 PM
css Kecerunan gigi gergaji

Artikel ini akan memperkenalkan kepada anda bagaimana untuk menyelesaikan masalah pengalianan yang disebabkan oleh menggunakan grafik kecerunan yang dipanggil CSS gradient aliasing boleh dilakukan sebaik sahaja anda mengetahuinya. Mari kita lihat cara untuk mencapainya ia akan membantu semua orang.

Teknik kehilangan gigi gergaji kecerunan CSS

Dalam CSS, kecerunan ialah salah satu sifat yang paling berkuasa.

Walau bagaimanapun, pelajar sering menghadapi masalah pengalianan yang disebabkan oleh grafik kecerunan apabila menggunakan kecerunan. [Pembelajaran yang disyorkan: tutorial video css]

Apakah itu aliasing kecerunan?

Jadi, apakah jaggies yang dihasilkan oleh grafik kecerunan?

DEMO ringkas:

<div></div>
div {
    width: 500px;
    height: 100px;
    background: linear-gradient(37deg), #000 50%, #f00 50%, #f00 0);
}
Salin selepas log masuk

Kesannya adalah seperti berikut:

Contoh terperinci tentang cara menyelesaikan masalah pengalianan kecerunan CSS!

Sebenarnya, perasaan bergerigi adalah sudah sangat jelas. Apabila kita zum masuk semula, bahagian dalam sebenarnya kelihatan seperti ini:

Contoh terperinci tentang cara menyelesaikan masalah pengalianan kecerunan CSS!

Atau ia kelihatan seperti ini:

Contoh terperinci tentang cara menyelesaikan masalah pengalianan kecerunan CSS!

Menariknya, fenomena pengaliasan amat ketara pada skrin dengan DPR 1, tetapi pada beberapa skrin definisi tinggi (dpr > 1), perasaan itu tidak begitu jelas.

DPR (Nisbah Piksel Peranti) ialah nisbah piksel peranti, DPR = piksel fizikal / piksel bebas peranti Nisbah piksel peranti menerangkan hubungan berkadar awal antara piksel fizikal dan piksel bebas peranti dalam keadaan tidak berskala.

Jadi kenapa ada perasaan bergerigi?

Pembentangan halaman web tradisional adalah berdasarkan unit piksel Untuk gambar yang satu warna beralih terus ke keadaan warna yang lain, ia boleh menyebabkan penurunan kualiti visual (herotan maklumat). Oleh itu, untuk elemen kecerunan biasa, seperti penulisan yang disebutkan di atas, aliasing berlaku, yang merupakan masalah berduri yang sangat biasa dalam proses menggunakan kecerunan.

Penyelesaian Mudah

Terdapat banyak penyelesaian untuk masalah herotan. Cara paling mudah di sini bukanlah untuk membuat peralihan terus, tetapi untuk menempah ruang peralihan kecerunan yang sangat kecil.

Kami hanya boleh menukar kod di atas:

div {
    width: 500px;
    height: 100px;
  - background: linear-gradient(37deg), #000 50%, #f00 50%, #f00);
  + background: linear-gradient(37deg), #000 49.5%, #f00 50.5%, #f00);
}
Salin selepas log masuk

Lihat dengan teliti pada perubahan Kami telah beralih secara langsung daripada 50% --> 50% kepada 1% ruang peralihan kecerunan. kesannya adalah seperti berikut:

Contoh terperinci tentang cara menyelesaikan masalah pengalianan kecerunan CSS!

Seperti yang anda lihat, kesannya bertambah baik serta-merta!

Sudah tentu, jika anda tidak mahu mengubah suai kod asal, anda juga boleh mencapainya dengan menindih lapisan elemen pseudo Berikut ialah gambar perbandingan 3 kaedah:

<div></div>
<div class="gradient"></div>
<div class="pesudo"></div>
Salin selepas log masuk
:root {
    --deg: 37deg;
    --c1: #000;
    --c2: #f00;
    --line-width: 0.5px;
}
div {
    margin: auto;
    width: 500px;
    height: 100px;
    background: linear-gradient(
        var(--deg),
        var(--c1) 50%,
        var(--c2) 50%,
        var(--c2) 0
    );
}
// 方法一:
.gradient {
    background: linear-gradient(
        var(--deg),
        var(--c1),
        var(--c1) calc(50% - var(--line-width)),
        var(--c2) calc(50% + var(--line-width)),
        var(--c2) 0
    );
}
// 方法二:
.pesudo {
    position: relative;

    &::before {
        content: "";
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        background: linear-gradient(
            var(--deg),
            transparent,
            transparent calc(50% - var(--line-width)),
            var(--c1) calc(50% - var(--line-width)),
            var(--c2) calc(50% + var(--line-width)),
            transparent calc(50% + var(--line-width)),
            transparent
        );
    }
}
Salin selepas log masuk

Tindikan oleh unsur pseudo Ini bermakna untuk mencapai peralihan yang lancar untuk menutup tempat di mana tepi bergerigi dijana:

Contoh terperinci tentang cara menyelesaikan masalah pengalianan kecerunan CSS!

Kesannya adalah seperti berikut:

Contoh terperinci tentang cara menyelesaikan masalah pengalianan kecerunan CSS!

Demo CodePen -- Hapuskan aliasing Gradien

Serlahkannya! Kaedah ini sesuai untuk kecerunan linear, kecerunan jejarian dan kecerunan sudut, dan merupakan cara paling mudah untuk menghapuskan aliasing CSS.

Kaedah anti-aliasing yang lebih maju

Sudah tentu, terdapat kaedah anti-aliasing lain yang lebih maju.

Dalam artikel Bionic Lion - CSS Illusion | Anti-Aliasing, satu lagi cara menarik untuk menghapuskan aliasing turut diperkenalkan. Kandungan berikut sebahagiannya dipetik daripada artikel.

Kita boleh membina tepi alias tepi->bina semula tepi bergerigi kaedah anti-aliasing.

Apa yang perlu kita lakukan ialah menindih satu lagi lapisan kandungan pada tempat bergerigi untuk menjadikan rasa bergerigi itu kurang sengit. Ia dipanggil Pixel-Offset Anti-Aliasing (POAA).

Implementing FXAA这篇博客中,解释了 FXAA 具体是如何运作的。对于一个已经被找到的图形边缘,经过 FXAA 处理后会变成这样,见下两幅图:

Contoh terperinci tentang cara menyelesaikan masalah pengalianan kecerunan CSS!

Contoh terperinci tentang cara menyelesaikan masalah pengalianan kecerunan CSS!

FXAA(Fast Approximate Anti-Aliasing),快速近似抗锯齿,它找到画面中所有图形的边缘并进行平滑处理。

我们可以轻易找到找到渐变的边缘地方,就是那些渐变的颜色改变的地方。有了边缘信息后,接着就要重建边缘。重建边缘也许可以再拆分,分为以下几个步骤:

  • 需要通过某种方法得到透明度的点
  • 这些点需要能够组成线段
  • 线段完全吻合我们的 Gradient
  • 使线段覆盖在 Gradient 的上一层以应用我们的修改

这就是大体思路,我们并没有参与浏览器的渲染,而是通过像 FXAA 一样的后处理的方法。在已渲染的图像上做文章。

比如说,我们有这样一张图:

.circle-con {
    $c1: #cd3f4f;
    $c2: #e6a964;
    position: relative;
    height: 300px;
    background-image: repeating-radial-gradient(
        circle at 0% 50%, 
        $c1 0, 
        $c2 50px
    );
}
Salin selepas log masuk

Contoh terperinci tentang cara menyelesaikan masalah pengalianan kecerunan CSS!

边缘信息如下:

Contoh terperinci tentang cara menyelesaikan masalah pengalianan kecerunan CSS!

我们要做的,就是在它的边缘处,利用渐变再生成一段渐变,通过准确叠加,消除渐变!原理图如下:

Contoh terperinci tentang cara menyelesaikan masalah pengalianan kecerunan CSS!

原理可行,但是实操起来非常之复杂,计算量会比较大。感兴趣的可以拿这段代码尝试一下:

.repeat-con {
    --c1: #cd3f4f;
    --c2: #e6a964;
    --c3: #5996cc;
    position: relative;
    height: 300px;
    background-image: repeating-linear-gradient(
        var(--deg),
        var(--c1),
        var(--c1) 10px,
        var(--c2) 10px,
        var(--c2) 40px,
        var(--c1) 40px,
        var(--c1) 50px,
        var(--c3) 50px,
        var(--c3) 80px
    );

    &.antialiasing {
        &:after {
            --offsetX: 0.4px;
            --offsetY: -0.1px;
            --dark-alpha: 0.3;
            --light-alpha: 0.6;
            --line-width: 0.6px;
            content: &#39;&#39;;
            position: absolute;
            top: var(--offsetY);
            left: var(--offsetX);
            width: 100%;
            height: 100%;
            opacity: 0.5;
            background-image: repeating-linear-gradient(
                var(--deg),
                var(--c3),
                transparent calc(0px + var(--line-width)),
                transparent calc(10px - var(--line-width)),
                var(--c2) 10px,
                var(--c1) 10px,
                transparent calc(10px + var(--line-width)),
                transparent calc(40px - var(--line-width)),
                var(--c1) 40px,
                var(--c2) 40px,
                transparent calc(40px + var(--line-width)),
                transparent calc(50px - var(--line-width)),
                var(--c3) 50px,
                var(--c1) 50px,
                transparent calc(50px + var(--line-width)),
                transparent calc(80px - var(--line-width)),
                var(--c1) 80px
            );
        }
    }
}
Salin selepas log masuk

最后

简单总结一下,本文介绍了几种 CSS 中可行的消除渐变锯齿的方法。

好了,本文到此结束,希望本文对你有所帮助 :)

Atas ialah kandungan terperinci Contoh terperinci tentang cara menyelesaikan masalah pengalianan kecerunan CSS!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara menggunakan butang bootstrap Cara menggunakan butang bootstrap Apr 07, 2025 pm 03:09 PM

Bagaimana cara menggunakan butang bootstrap? Perkenalkan CSS bootstrap untuk membuat elemen butang dan tambahkan kelas butang bootstrap untuk menambah teks butang

Cara memasukkan gambar di bootstrap Cara memasukkan gambar di bootstrap Apr 07, 2025 pm 03:30 PM

Terdapat beberapa cara untuk memasukkan imej dalam bootstrap: masukkan imej secara langsung, menggunakan tag HTML IMG. Dengan komponen imej bootstrap, anda boleh memberikan imej yang responsif dan lebih banyak gaya. Tetapkan saiz imej, gunakan kelas IMG-cecair untuk membuat imej boleh disesuaikan. Tetapkan sempadan, menggunakan kelas IMG-Sempadan. Tetapkan sudut bulat dan gunakan kelas IMG-bulat. Tetapkan bayangan, gunakan kelas bayangan. Saiz semula dan letakkan imej, menggunakan gaya CSS. Menggunakan imej latar belakang, gunakan harta CSS imej latar belakang.

Bagaimana cara mengeluarkan gaya lalai dalam senarai bootstrap? Bagaimana cara mengeluarkan gaya lalai dalam senarai bootstrap? Apr 07, 2025 am 10:18 AM

Gaya lalai senarai bootstrap boleh dikeluarkan dengan mengatasi CSS. Gunakan peraturan dan pemilih CSS yang lebih spesifik, ikuti "Prinsip Jarak" dan "Prinsip Berat", mengatasi gaya lalai bootstrap. Untuk mengelakkan konflik gaya, lebih banyak pemilih yang disasarkan boleh digunakan. Sekiranya penindasan tidak berjaya, laraskan berat CSS adat. Pada masa yang sama, perhatikan pengoptimuman prestasi, elakkan terlalu banyak! Penting, dan tulis kod CSS ringkas dan cekap.

Cara mengubah saiz bootstrap Cara mengubah saiz bootstrap Apr 07, 2025 pm 03:18 PM

Untuk menyesuaikan saiz unsur-unsur dalam bootstrap, anda boleh menggunakan kelas dimensi, yang termasuk: menyesuaikan lebar: .col-, .w-, .mw-adjust ketinggian: .h-, .min-h-, .max-h-

Cara Membina Rangka Kerja Bootstrap Cara Membina Rangka Kerja Bootstrap Apr 07, 2025 pm 12:57 PM

Untuk membuat rangka kerja bootstrap, ikuti langkah -langkah ini: Pasang bootstrap melalui CDN atau pasang salinan tempatan. Buat dokumen HTML dan pautan bootstrap CSS ke & lt; kepala & gt; seksyen. Tambah fail bootstrap JavaScript ke body & lt; body & gt; seksyen. Gunakan komponen bootstrap dan menyesuaikan lembaran gaya untuk memenuhi keperluan anda.

Cara menetapkan bar navigasi bootstrap Cara menetapkan bar navigasi bootstrap Apr 07, 2025 pm 01:51 PM

Bootstrap Menyediakan panduan mudah untuk menubuhkan bar navigasi: Memperkenalkan Perpustakaan Bootstrap untuk membuat bar navigasi Tambah Identiti Jenama Buat Pautan Navigasi Tambah Elemen Lain (Pilihan) Laraskan Gaya (Pilihan)

Cara susun atur bootstrap Cara susun atur bootstrap Apr 07, 2025 pm 02:24 PM

Untuk menggunakan bootstrap untuk susun atur laman web, anda perlu menggunakan sistem grid untuk membahagikan halaman ke dalam bekas, baris, dan lajur. Mula -mula tambahkan bekas, kemudian tambahkan baris di dalamnya, tambahkan lajur dalam baris, dan akhirnya tambah kandungan dalam lajur. Fungsi susun atur responsif Bootstrap secara automatik menyesuaikan susun atur mengikut titik putus (XS, SM, MD, LG, XL). Susun atur yang berbeza di bawah saiz skrin yang berbeza boleh dicapai dengan menggunakan kelas responsif.

Cara Mengesahkan Tarikh Bootstrap Cara Mengesahkan Tarikh Bootstrap Apr 07, 2025 pm 03:06 PM

Untuk mengesahkan tarikh dalam bootstrap, ikuti langkah -langkah ini: memperkenalkan skrip dan gaya yang diperlukan; memulakan komponen pemilih tarikh; Tetapkan atribut data-BV-tarikh untuk membolehkan pengesahan; Konfigurasikan peraturan pengesahan (seperti format tarikh, mesej ralat, dll.); Mengintegrasikan rangka kerja pengesahan bootstrap dan mengesahkan input tarikh secara automatik apabila borang dikemukakan.

See all articles