> 웹 프론트엔드 > CSS 튜토리얼 > 이미지를 사용하지 않고 CSS에서 역원 효과를 만들 수 있나요?

이미지를 사용하지 않고 CSS에서 역원 효과를 만들 수 있나요?

Mary-Kate Olsen
풀어 주다: 2024-12-05 18:42:11
원래의
576명이 탐색했습니다.

Can I Create an Inverse Circle Effect in CSS Without Using Images?

CSS3 형성: "역원" 환상 마스터하기

딜레마: 부정적인 공간 조각

"역원"과 비슷해 당황스러울 수 있습니다. 마치 검은색 테두리가 div의 바깥쪽 가장자리를 따라 사라지고 단색 배경에 잘린 효과가 남는 것과 같습니다. CSS만으로 이 작업이 가능합니까, 아니면 이미지가 필수입니까?

해결책 1(원본): 기하학 및 Z-색인 조작

div를 신중하게 배열하고 영리하게 Z-인덱싱을 사용하면 이미지에 의존하지 않고도기만적인 역원 효과를 얻을 수 있습니다. 이 솔루션은 음수 Z-인덱스와 정확한 오프셋을 통합함으로써 IE9, Firefox 및 Chrome과 같은 브라우저에서 환상이 유지되도록 보장합니다.

솔루션 2(업데이트): 방사형 배경 그라데이션 활용

CSS3의 기능을 강화한 방사형 배경 그라데이션은 Firefox, Chrome, IE10 및 사파리. 이 혁신적인 접근 방식을 통해 유연성이 향상되어 배경이 투명한 시나리오에서도 역원을 생성할 수 있습니다.

구현

원본 솔루션:

HTML:

<div>
로그인 후 복사

CSS:

.inversePair {
    border: 1px solid black;
    background: grey;
    display: inline-block;    
    position: relative;    
    height: 100px;
    text-align: center;
    line-height: 100px;
    vertical-align: middle;
}

#a {
    width: 100px;
    border-radius: 50px;
}

#a:before {
    content:' ';
    left: -6px;
    top: -6px;
    position: absolute;
    z-index: -1;
    width: 112px; /* 5px gap */
    height: 112px;
    border-radius: 56px;
    background-color: white;
} 

#b {
    width: 200px;
    z-index: -2;
    padding-left: 50px;
    margin-left: -55px;
    overflow: hidden;
    -webkit-border-top-right-radius: 20px;
    -webkit-border-bottom-right-radius: 20px;
    -moz-border-radius-topright: 20px;
    -moz-border-radius-bottomright: 20px;
    border-top-right-radius: 20px;
    border-bottom-right-radius: 20px;
}

#b:before {
    content:' ';
    left: -58px;
    top: -7px;
    position: absolute;
    width: 114px; /* 5px gap, 1px border */
    height: 114px;
    border-radius: 57px;
    background-color: black;
} 
로그인 후 복사

방사형 그라디언트 솔루션:

HTML : 원작과 동일 솔루션.

CSS:

.inversePair {
    border: 1px solid black;
    display: inline-block;    
    position: relative;    
    height: 100px;
    text-align: center;
    line-height: 100px;
    vertical-align: middle;
}

#a {
    width: 100px;
    border-radius: 50px;
    background: grey;
    z-index: 1;
}

#b {
    width: 200px;
    /* need to play with margin/padding adjustment
       based on your desired "gap" */
    padding-left: 30px;
    margin-left: -30px;
    /* real borders */
    border-left: none;
    -webkit-border-top-right-radius: 20px;
    -webkit-border-bottom-right-radius: 20px;
    -moz-border-radius-topright: 20px;
    -moz-border-radius-bottomright: 20px;
    border-top-right-radius: 20px;
    border-bottom-right-radius: 20px;
    /* the inverse circle "cut" */
    background-image: -moz-radial-gradient(
        -23px 50%, /* the -23px left position varies by your "gap" */
        circle closest-corner, /* keep radius to half height */
        transparent 0, /* transparent at center */
        transparent 55px, /*transparent at edge of gap */
        black 56px, /* start circle "border" */
        grey 57px /* end circle border and begin color of rest of background */
    );
    background-image: -webkit-radial-gradient(-23px 50%, circle closest-corner, rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, 0) 55px, black 56px, grey 57px);
    background-image: -ms-radial-gradient(-23px 50%, circle closest-corner, rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, 0) 55px, black 56px, grey 57px);
    background-image: -o-radial-gradient(-23px 50%, circle closest-corner, rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, 0) 55px, black 56px, grey 57px);
    background-image: radial-gradient(-23px 50%, circle closest-corner, rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, 0) 55px, black 56px, grey 57px);
}
로그인 후 복사

위 내용은 이미지를 사용하지 않고 CSS에서 역원 효과를 만들 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿