찾다
웹 프론트엔드CSS 튜토리얼양식을 아름답게 하기 위한 CSS3 컨트롤 정보

이 글에서는 CSS3로 양식 컨트롤을 아름답게 만드는 기술, 드롭다운 컨트롤, 라디오 상자, 체크박스를 아름답게 만드는 기술을 주로 소개합니다. 관심 있는 친구들은 참고하세요.

다른 브라우저에서 양식의 기본 컨트롤은 스타일이 다르며 사용자 경험이 매우 좋지 않습니다. CSS3를 사용하면 양식 컨트롤을 아름답게 만들고 더 나은 사용자 경험을 제공할 수 있습니다. 단점은 브라우저 호환성 문제입니다.

1. 드롭다운 컨트롤

렌더링:

드롭다운 컨트롤의 레이아웃 구조:

<p class="container">  
        <p class="select">  
            <p>所有选项</p>  
            <ul>  
                <li class="selected" data-value="所有选项">所有选项</li>  
                <li data-value="Python">Python</li>  
                <li data-value="Javascript">Javascript</li>  
                <li data-value="Java">Java</li>  
                <li data-value="Ruby">Ruby</li>  
            </ul>  
        </p>  
    </p>

ul은 실제 사용 중에 드롭다운 목록을 시뮬레이션하는 데 사용됩니다. 동적으로 생성된 백그라운드에서 반환된 데이터를 기반으로 합니다. p 요소는 선택한 옵션을 렌더링하는 데 사용됩니다.

핵심 스타일:

.container .select{   
    width: 300px;   
    height: 40px;   
    font-size: 14px;   
    background-color:#fff;   
    margin-left: auto;   
    margin-right: auto;   
    position: relative;   
}   
/*下拉箭头的样式*/  
.container .select:after{   
    content: "";   
    display: block;   
    width: 10px;   
    height: 10px;   
    position: absolute;   
    top: 11px;   
    rightright: 12px;   
    border-left: 1px solid #ccc;   
    border-bottom: 1px solid #ccc;   
    -webkit-transform: rotate(-45deg);   
    transform: rotate(-45deg);   
    -webkit-transition: transform .2s ease-in, top .2s ease-in;   
    transition: transform .2s ease-in, top .2s ease-in;   
}   
/* 
    被选中的列表项显示的区域  
*/  
.container .select p{   
    padding: 0 15px;   
    line-height: 40px;   
    cursor: pointer;   
}   
/* 
    下拉列表的样式  
    默认高度为0  
*/  
.container .select ul{   
    list-style: none;   
    background-color: #fff;   
    width: 100%;   
    overflow-y: auto;   
    position: absolute;   
    top: 40px;   
    left: 0;   
    max-height:0;   
    -webkit-transition: max-height .3s ease-in;   
    transition: max-height .3s ease-in;   
}   
.container .select ul li{   
    padding: 0 15px;   
    line-height: 40px;   
    cursor: pointer;   
}   
  
.container .select ul li:hover{   
    background-color: #e0e0e0;   
}   
.container .select ul li.selected{   
    background-color: #39f;   
    color: #fff;   
  
}   
/*下拉控件动画*/  
@-webkit-keyframes slide-down{   
    0%{   
        -webkit-transform: scale(1, 0);   
        transform: scale(1, 0);   
    }   
    25%{   
        -webkit-transform: scale(1, 1.2);   
        transform: scale(1, 1.2);   
    }   
    50%{   
        -webkit-transform: scale(1, .85);   
        transform: scale(1, .85);   
    }   
    75%{   
        -webkit-transform: scale(1, 1.05);   
        transform: scale(1, 1.05);   
    }   
    100%{   
        -webkit-transform: scale(1, 1);   
        transform: scale(1, 1);   
    }   
}   
@keyframes slide-down{   
    0%{   
        -webkit-transform: scale(1, 0);   
        transform: scale(1, 0);   
    }   
    25%{   
        -webkit-transform: scale(1, 1.2);   
        transform: scale(1, 1.2);   
    }   
    50%{   
        -webkit-transform: scale(1, .85);   
        transform: scale(1, .85);   
    }   
    75%{   
        -webkit-transform: scale(1, 1.05);   
        transform: scale(1, 1.05);   
    }   
    100%{   
        -webkit-transform: scale(1, 1);   
        transform: scale(1, 1);   
    }   
}   
.container .select.on ul{   
    /* 
        默认情况下,ul的高度为0,当点击控控件的时候,  
        设置下拉列表的高度。  
    */  
    max-height: 300px;   
    -webkit-transform-origin: 50% 0;   
    transform-origin: 50% 0;   
    -webkit-animation: slide-down .5s ease-in;   
    animation: slide-down .5s ease-in;   
}   
/*下拉选项被选中后控制箭头的方向*/  
.container .select.on:after{   
    -webkit-transform: rotate(-225deg);   
    transform: rotate(-225deg);   
    top: 18px;   
}

이것은 단지 정적 스타일일 뿐입니다. "선택" 프로세스를 구현하려면 JavaScript를 사용하여 구현해야 합니다.

$(function(){   
    var selected  = $(&#39;.select > p&#39;);   
    //控制列表显隐   
    selected.on(&#39;click&#39;, function(event){   
        $(this).parent(&#39;.select&#39;).toggleClass(&#39;on&#39;);   
        event.stopPropagation();   
    });   
    //点击列表项,将列表项的值添加到p标签中   
    $(&#39;.select li&#39;).on(&#39;click&#39;, function(event){   
        var self = $(this);   
        selected.text(self.data(&#39;value&#39;));   
    });   
    //点击文档其他区域隐藏列表   
    $(document).on(&#39;click&#39;, function(){   
        $(&#39;.select&#39;).removeClass(&#39;on&#39;);   
    });   
});

2. 라디오 버튼 꾸미기

able 태그는 for 속성을 통해 라디오 버튼과 연결할 수 있습니다. 이 기능을 사용하여 라디오 버튼을 아름답게 만드는 것도 원칙입니다. 또한 실제 라디오 버튼(type="radio")을 숨기는 것을 잊지 마세요.

/*用过label标签来模拟radio 的样式*/  
.radio-block label{   
    display: inline-block;   
    position: relative;   
    width: 28px;   
    height: 28px;   
    border: 1px solid #cccccc;   
    background-color: #fff;   
    border-radius: 28px;   
    cursor: pointer;   
    margin-right:10px;   
}   
  
input[type="radio"]{   
    display: none;   
}   
.radio-block label:after{   
    content: &#39;&#39;;   
    display: block;   
    position: absolute;   
    width: 20px;   
    height: 20px;   
    left: 4px;   
    top: 4px;   
    background-color: #28bd12;   
    border-radius: 20px;   
    /*通过scale属性来控制中心点*/  
    -webkit-transform: scale(0);   
    transform: scale(0);   
}   
/*选中样式*/  
input[type="radio"]:checked + label{   
    background-color :#eee;   
    -webkit-transition: background-color .3s ease-in;   
    transition: background-color .3s ease-in;   
}   
/*选中之后的样式*/  
input[type="radio"]:checked + label:after{   
    -webkit-transform: scale(1);   
    transform: scale(1);   
    -webkit-transition: transform .2s ease-in;   
    transition: transform .2s ease-in;   
}

최종 효과:

3. 체크박스를 아름답게 만들기

원리는 라디오 버튼 제작 방식과 유사합니다. 체크하면 원의 왼쪽 값과 라벨의 배경이 표시됩니다.

.switch-block{   
    width: 980px;   
    padding: 3% 0;   
    margin: 0 auto;   
    text-align: center;   
    background-color: #fc9;   
}   
.switch-block label{   
    display: inline-block;   
    width: 62px;   
    height: 30px;   
    background-color:#fafafa;   
    border:1px solid #eee;   
    border-radius: 16px;   
    position: relative;   
    margin-right: 10px;   
    cursor: pointer;   
    -webkit-transition: background .2s ease-in;   
    transition :background .2s ease-in;   
}   
input[type="checkbox"]{   
    display: none;   
}   
.switch-block label:after{   
    content: &#39;&#39;;   
    position: absolute;   
    width: 28px;   
    height: 28px;   
    border: 1px solid #eee;   
    border-radius: 14px;   
    left: 1px;   
    background-color:#fff;   
    -webkit-transition: left .2s ease-in;   
    transition: left .2s ease-in;   
}   
.switch-block input[type="checkbox"]:checked + label{   
    background-color:#3c6;   
    -webkit-transition: background .2s ease-in;   
    transition :background .2s ease-in;   
}   
.switch-block input[type="checkbox"]:checked + label:after{   
    left: 32px;   
    -webkit-transition: left .2s ease-in;   
    transition: left .2s ease-in;   
}

위 내용은 모두의 학습에 도움이 되기를 바랍니다. 더 많은 관련 내용은 PHP 중국어 홈페이지를 주목해주세요!

관련 권장사항:

우선순위 비교를 통해 CSS 컨트롤 스타일을 확인하는 세 가지 방법

CSS 배너 이미지의 반응형 중앙 표시 방법에 대해

음수 여백 값을 사용하는 방법 ​​​​중심 위치를 조정하는 CSS

위 내용은 양식을 아름답게 하기 위한 CSS3 컨트롤 정보의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
주간 플랫폼 뉴스 : 느린 연결에서 UX 개선, ALT 텍스트 작성 팁 및 HTML로드 속성에 대한 폴리 필드주간 플랫폼 뉴스 : 느린 연결에서 UX 개선, ALT 텍스트 작성 팁 및 HTML로드 속성에 대한 폴리 필드Apr 17, 2025 am 11:09 AM

이번 주에 라운드 업, 느린 연결을 결정하는 방법, 이미지에 대한 Alt 텍스트에 넣어야 할 내용 및 HTML로드 속성을위한 새로운 폴리 플릴,

약간의 팝을 추가하기 위해 재사용 가능한 팝 오버약간의 팝을 추가하기 위해 재사용 가능한 팝 오버Apr 17, 2025 am 11:02 AM

팝 오버는 사용자가 제어 버튼을 클릭 할 때 또는 정의 된 영역 내에서 화면의 컨텐츠 위에 표시되는 과도 뷰입니다. 예를 들어,

스타일링은 실제 밑줄과의 링크입니다스타일링은 실제 밑줄과의 링크입니다Apr 17, 2025 am 10:57 AM

스타일의 밑줄에 오기 전에 질문에 대답해야합니다.

주간 플랫폼 뉴스 : HTML로드 속성, 주요 ARIA 사양 및 iframe에서 Shadow Dom으로 이동주간 플랫폼 뉴스 : HTML로드 속성, 주요 ARIA 사양 및 iframe에서 Shadow Dom으로 이동Apr 17, 2025 am 10:55 AM

이번 주에 플랫폼 뉴스 라운드 업 RONDUP, Chrome은로드에 대한 새로운 속성, 웹 개발자를위한 접근성 사양 및 BBC Move를 소개합니다.

GraphQL이있는 멀티 플레이어 TIC TAC 발가락GraphQL이있는 멀티 플레이어 TIC TAC 발가락Apr 17, 2025 am 10:54 AM

GraphQL은 프론트 엔드 개발자에게 매우 힘을 실어주는 API의 쿼리 언어입니다. GraphQL 사이트에서 설명 하듯이 데이터를 설명하고 무엇을 요청하십시오.

CSS 변수를 사용한 논리적 작업CSS 변수를 사용한 논리적 작업Apr 17, 2025 am 10:44 AM

종종 스위치 변수를 사용하는 동안 (0 또는 1의 변수,이 게시물에서 더 자세히 설명한 개념).

게으른 부하 내장 YouTube 비디오게으른 부하 내장 YouTube 비디오Apr 17, 2025 am 10:40 AM

이것은 Arthur Corenzan을 통한 매우 영리한 아이디어입니다. 기본 YouTube Embed를 사용하는 대신 사용자가 플레이하는지 여부에 관계없이 페이지에 리소스를 추가합니다.

CSS에서 커서를 회전 할 수 있습니까?CSS에서 커서를 회전 할 수 있습니까?Apr 17, 2025 am 10:28 AM

좀! 간단하거나 표준적인 방법은 없지만 가능합니다. CSS를 사용하여 커서를 다른 내장 기본 버전으로 변경할 수 있습니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기