[jquery] 선택 상자의 스타일을 지정할 수 있습니까? [닫은]

스타일을 지정해야하는 HTML 선택 상자가 있습니다. CSS 만 사용하는 것을 선호하지만 jQuery를 사용하여 간격을 메울 것입니다.

누구나 좋은 튜토리얼이나 플러그인을 추천 할 수 있습니까?

Google은 알고 있지만 지난 2 시간 동안 검색을했는데 내 요구에 맞는 것을 찾지 못했습니다.

다음과 같아야합니다.

  • jQuery 1.3.2와 호환
  • 얻기 쉬운
  • 눈에 거슬리지 않는
  • 선택 상자의 모든 측면에 스타일을 적용하여 완벽하게 사용자 정의 가능

누구든지 내 필요를 충족시킬 수있는 것을 알고 있습니까?



답변

내가 거기 밖으로 일부의 jQuery 플러그인이 변환을 보았다 <select>‘s의 <ol>의와 <option>의에 <li>의, 그래서 당신은 CSS로 스타일을 수있다. 자신의 롤을 너무 힘들 수 없습니다.

여기의 하나 https://gist.github.com/1139558은 (그가하는 데 사용 여기에 있지만, 사이트가 다운 된 것 같습니다.)

다음과 같이 사용하십시오.

$('#myselectbox').selectbox();

다음과 같이 스타일을 지정하십시오.

div.selectbox-wrapper ul {
  list-style-type:none;
  margin:0px;
  padding:0px;
}
div.selectbox-wrapper ul li.selected {
  background-color: #EAF2FB;
}
div.selectbox-wrapper ul li.current {
  background-color: #CDD8E4;
}
div.selectbox-wrapper ul li {
  list-style-type:none;
  display:block;
  margin:0;
  padding:2px;
  cursor:pointer;
}


답변

업데이트 : 2013 년 현재 확인할 가치가있는 두 가지는 다음과 같습니다.

  • 선택된 -github에서 멋진 물건, 7k + 감시자. (의견에 ‘유료 대가’로 언급)
  • Select2 -Angular-UI의 일부인 Chosen에서 영감을 받아 선택된 몇 가지 유용한 조정이 이루어졌습니다.

네!


2012 년 현재 내가 찾은 가장 가볍고 유연한 솔루션 중 하나는 ddSlick 입니다. 사이트에서 관련 (편집 된) 정보 :

  • 이미지와 텍스트를 추가 select options
  • JSON을 사용하여 옵션을 채울 수 있음
  • 선택시 콜백 기능 지원

다음은 다양한 모드의 미리보기입니다.

여기에 이미지 설명을 입력하십시오


답변

CSS는 Mozilla가 가장 친근한 것 같습니다 (특히 FF 3.5 이상). 웹킷 브라우저는 대부분 자체 작업을 수행하며 모든 스타일을 무시합니다. IE8은 최소한 테두리 색상 / 너비 스타일을 허용하지만 IE는 매우 제한적입니다.

다음은 실제로 FF 3.5 이상에서 상당히 좋아 보입니다 (물론 색상 환경 설정 선택).

select {
    -moz-border-radius: 4px;
    -moz-box-shadow: 1px 1px 5px #cfcfcf inset;
    border: 1px solid #cfcfcf;
    vertical-align: middle;
    background-color: transparent;
}
option {
    background-color: #fef5e6;
    border-bottom: 1px solid #ebdac0;
    border-right: 1px solid #d6bb86;
    border-left: 1px solid #d6bb86;
}
option:hover {
    cursor: pointer;
}

그러나 IE의 경우 옵션 메뉴를 풀다운하지 않을 때 옵션을 표시하지 않으려면 옵션에서 배경색을 비활성화해야합니다. 그리고 내가 말했듯이 웹킷은 자체적으로 작업합니다.


답변

이 작업을 수행하는 간단하고 알맞은 방법을 찾았습니다. 브라우저 간, 분해 가능하며 양식 게시물을 손상시키지 않습니다. 먼저 선택 상자의 불투명도를 0으로 설정하십시오.

.select {
    opacity : 0;
    width: 200px;
    height: 15px;
}

<select class='select'>
    <option value='foo'>bar</option>
</select>

이것은 당신이 여전히 그것을 클릭 할 수 있도록

그런 다음 선택 상자와 동일한 치수로 div를 만드십시오. div는 배경으로 선택 상자 아래에 있어야합니다. 이를 달성하려면 {position : absolute} 및 z-index를 사용하십시오.

.div {
    width: 200px;
    height: 15px;
    position: absolute;
    z-index: 0;
}

<div class='.div'>{the text of the the current selection updated by javascript}</div>
<select class='select'>
    <option value='foo'>bar</option>
</select>

자바 스크립트로 div의 innerHTML을 업데이트하십시오. jQuery로 Easypeasy :

$('.select').click(function(event)) {
    $('.div').html($('.select option:selected').val());
}

그게 다야! 선택 상자 대신 div 스타일을 지정하십시오. 위의 코드를 테스트하지 않았으므로 아마도 조정해야 할 것입니다. 그러나 희망적으로 요점을 얻습니다.

이 솔루션이 {-webkit-appearance : none;}을 능가한다고 생각합니다. 브라우저가 가장해야 할 일은 양식 요소와의 상호 작용을 지시하는 것이지만 사이트 디자인을 깨뜨릴 때 처음에 페이지에 표시되는 방식은 아닙니다.


답변

주로 원한다면 약간의 플러그가 있습니다.

  • 요소 의 닫힌 상태 를 커스터마이즈select
  • 그러나 열린 상태 에서는 옵션 선택 (스크롤 휠, 화살표 키, 탭 포커스,에 대한 ajax 수정 options, 적절한 zindex 등)에 대한 더 나은 기본 경험을 선호합니다.
  • 지저분 ul하고 li생성 된 마크 업을 싫어함

그러면 jquery.yaselect.js가 더 적합 할 수 있습니다 . 간단히:

$('select').yaselect();

그리고 마지막 마크 업은 :

<div class="yaselect-wrap">
  <div class="yaselect-current"><!-- current selection --></div>
</div>
<select class="yaselect-select" size="5">
  <!-- your option tags -->
</select>

github.com 에서 확인하십시오


답변

CSS 자체로 어느 정도 스타일을 지정할 수 있습니다

select {
    background: red;
    border: 2px solid pink;
}

그러나 이것은 전적으로 브라우저에 달려 있습니다. 일부 브라우저는 완고합니다.

그러나 이것은 지금까지 당신을 데려 갈 것이며 항상 좋아 보이지는 않습니다. 완전한 제어를 위해서는 jQuery를 통한 선택을 선택 상자의 기능을 에뮬레이트하는 자체 위젯으로 바꾸어야합니다. JS가 비활성화되면 일반 선택 상자가 제자리에 있는지 확인하십시오. 이를 통해 더 많은 사용자가 귀하의 양식을 사용할 수 있으며 접근성이 향상됩니다.


답변

대부분의 브라우저는 CSS를 사용한 선택 태그 사용자 정의를 지원하지 않습니다. 그러나 select 태그의 스타일을 지정하는 데 사용할 수있는이 자바 스크립트를 찾습니다. 그러나 평소와 같이 IE 브라우저는 지원하지 않습니다.

http://ryanfait.com/resources/custom-checkboxes-and-radio-buttons/
Onchange 속성이 작동하지 않는다는 오류를 발견했습니다.