분명히 이것은 작동하지 않습니다.
select[multiple]{
height: 100%;
}
선택이 100 % 페이지 높이를 갖도록합니다 ...
auto
작동하지 않지만 여전히 세로 스크롤 막대가 나타납니다.
다른 아이디어가 있습니까?
분명히 이것은 작동하지 않습니다.
select[multiple]{
height: 100%;
}
선택이 100 % 페이지 높이를 갖도록합니다 ...
auto
작동하지 않지만 여전히 세로 스크롤 막대가 나타납니다.
다른 아이디어가 있습니까?
답변:
size
속성을 사용할 수 있다고 생각 합니다. 모든 최신 브라우저에서 작동합니다.
<select name="courses" multiple="multiple" size="30" style="height: 100%;">
오래되었지만 jquery가 필요없이 원하는 것을 수행합니다. 숨겨진 오버플로는 스크롤바를 없애고 자바 스크립트는 올바른 크기로 만듭니다.
<select multiple='multiple' id='select' style='overflow:hidden'>
<option value='foo'>foo</option>
<option value='bar'>bar</option>
<option value='abc'>abc</option>
<option value='def'>def</option>
<option value='xyz'>xyz</option>
</select>
그리고 약간의 자바 스크립트
var select = document.getElementById('select');
select.size = select.length;
Javascript / JQuery에서만이 작업을 수행 할 수 있습니다. 다음 JQuery로 수행 할 수 있습니다 (선택 항목에 다중 선택의 ID를 부여했다고 가정).
$(function () {
$("#multiSelect").css("height", parseInt($("#multiSelect option").length) * 20);
});
$('select.expandable').each(function() { $(this).attr('size', $(this).find('option').length) })
나는 질문이 오래되었다는 것을 알고 있지만 주제가 닫히지 않은 방법은 도움을 줄 것입니다.
"크기"속성은 문제를 해결합니다.
예:
<select name="courses" multiple="multiple" size="30">
select
다음을 포함 할 수 있습니다 optgroup
.
<select id="list">
<optgroup label="Group 1">
<option value="1">1</option>
</optgroup>
<optgroup label="Group 2">
<option value="2">2</option>
<option value="3">3</option>
</optgroup>
</select>
<script>
const l = document.getElementById("list")
l.setAttribute("size", l.childElementCount + l.length)
</script>
이 예에서 총계 size
는 (1+1)+(1+2)=5
입니다.
<optgroup>
s와 <option>
들.
간단한 자바 스크립트로이 작업을 수행 할 수 있습니다.
<select multiple="multiple" size="return this.length();">
... 또는 레코드 수까지 높이 제한 ...
<select multiple="multiple" size="return this.length() > 10 ? this.length(): 10;">
$('#firstSelect').attr('size', $('#firstSelect').length);
. 이 바이올린 봐 https://jsfiddle.net/ergt5upf/2/
스크롤바를 제거하려면 다음 CSS를 추가하십시오.
select[multiple] {
overflow-y: auto;
}
다음은 스 니펫입니다.
select[multiple] {
overflow-y: auto;
}
<select>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
<select multiple size="3">
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
크기 속성을 사용하는 것이 가장 실용적인 솔루션이지만 두세 가지 옵션 만있는 요소 를 선택 하는 데 적용 할 때 단점이 있습니다.
간단한 JavaScript를 사용하여 크기 속성을 올바른 값으로 자동으로 설정할 수 있습니다 ( 예 : this fiddle 참조) .
$(function() {
$("#autoheight").attr("size", parseInt($("#autoheight option").length));
});
위에서 언급했듯이이 솔루션은 두세 가지 옵션 만있는 경우 문제를 해결하지 못합니다.
먼저 옵션 태그를 계산 한 다음 크기 속성에 대한 개수를 설정할 수 있습니다. 예를 들어 PHP에서는 배열을 계산 한 다음 배열에 foreach 루프를 사용할 수 있습니다.
<?php $count = count($array); ?>
<select size="<?php echo $count; ?>" style="height:100%;">
<?php foreach ($array as $item){ ?>
<option value="valueItem">Name Item</option>
<?php } ?>
</select>
다음은 Laravel 커뮤니티에서 매우 인기있는 샘플 패키지 사용입니다.
{!! Form::select('subdomains[]', $subdomains, null, [
'id' => 'subdomains',
'multiple' => true,
'size' => $subdomains->count(),
'class' => 'col-12 col-md-4 form-control '.($errors->has('subdomains') ? 'is-invalid' : ''),
]) !!}