选项和选择元素的字体大小不同(仅限ios)

时间:2018-02-20 11:20:08

标签: html css

我希望选项的字体小于选择。这适用于Chrome PC,但不适用于IOS。片段中的大小被夸大了。我尝试使用和不使用optgroup。



.styled-select { overflow: hidden; height: 74px; float: left; width: 365px; margin-right: 10px; background: url(http://i50.tinypic.com/9ldb8j.png) no-repeat right center #5c5c5c; }
.styled-select select { font-size: 34px; border-radius: 0; border: none; background: transparent; width: 380px; overflow: hidden; padding-top: 15px; height: 70px; text-indent: 10px; color: #ffffff; -webkit-appearance: none;
}
.styled-select optgroup { font-size: 14px; }
.styled-select option.service-small { font-size: 14px; padding: 5px; background: #5c5c5c; }

<div class="styled-select slate">
  <select class="service-area" name="service-area">
    <optgroup>
      <option selected="selected" class="service-small">Service area?</option>
      <option class="service-small">Volunteering</option>
      <option class="service-small">Partnership &amp; Support</option>
      <option class="service-small">Business Services</option>
    </optgroup>
  </select>
</div>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

这是一个例子:

但在这种情况下我也使用jQuery。该解决方案适用于IOS。

参考:link

$('select').each(function () {

    // Cache the number of options
    var $this = $(this),
        numberOfOptions = $(this).children('option').length;

    // Hides the select element
    $this.addClass('s-hidden');

    // Wrap the select element in a div
    $this.wrap('<div class="select"></div>');

    // Insert a styled div to sit over the top of the hidden select element
    $this.after('<div class="styledSelect"></div>');

    // Cache the styled div
    var $styledSelect = $this.next('div.styledSelect');

    // Show the first select option in the styled div
    $styledSelect.text($this.children('option').eq(0).text());

    // Insert an unordered list after the styled div and also cache the list
    var $list = $('<ul />', {
        'class': 'options'
    }).insertAfter($styledSelect);

    // Insert a list item into the unordered list for each select option
    for (var i = 0; i < numberOfOptions; i++) {
        $('<li />', {
            text: $this.children('option').eq(i).text(),
            rel: $this.children('option').eq(i).val()
        }).appendTo($list);
    }

    // Cache the list items
    var $listItems = $list.children('li');

    // Show the unordered list when the styled div is clicked (also hides it if the div is clicked again)
    $styledSelect.click(function (e) {
        e.stopPropagation();
        $('div.styledSelect.active').each(function () {
            $(this).removeClass('active').next('ul.options').hide();
        });
        $(this).toggleClass('active').next('ul.options').toggle();
    });

    // Hides the unordered list when a list item is clicked and updates the styled div to show the selected list item
    // Updates the select element to have the value of the equivalent option
    $listItems.click(function (e) {
        e.stopPropagation();
        $styledSelect.text($(this).text()).removeClass('active');
        $this.val($(this).attr('rel'));
        $list.hide();
        /* alert($this.val()); Uncomment this for demonstration! */
    });

    // Hides the unordered list when clicking outside of it
    $(document).click(function () {
        $styledSelect.removeClass('active');
        $list.hide();
    });

});
body {
    padding:50px;
    background-color:white;
}
.s-hidden {
    visibility:hidden;
    padding-right:10px;
}
.select {
    cursor:pointer;
    display:inline-block;
    position:relative;
    font:normal 11px/22px Arial, Sans-Serif;
    color:black;
    border:1px solid #ccc;
	  width: 450px;
   padding:20px;
}
.styledSelect {
  font-size: 30px;
    position:absolute;
    top:0;
    right:0;
    bottom:0;
    left:0;
    background-color:white;
    padding:20px;
    font-weight:bold;
}
.styledSelect:after {
    content:"";
    width:0;
    height:0;
    border:5px solid transparent;
    border-color:black transparent transparent transparent;
    position:absolute;
    top:30px;
    right:6px;
}
.styledSelect:active, .styledSelect.active {
    background-color:#eee;
}
.options {
    display:none;
    position:absolute;
    top:100%;
    right:0;
    left:0;
    z-index:999;
    margin:0 0;
    padding:0 0;
    list-style:none;
    border:1px solid #ccc;
    background-color:white;
    -webkit-box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);
    -moz-box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);
    box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);
}
.options li {
    padding:0 6px;
    margin:0 0;
    padding:0 10px;
}
.options li:hover {
    background-color:#39f;
    color:white;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<div class="styled-select slate">
  <select class="service-area" name="service-area">

      <option selected="selected" class="service-small">Service area?</option>
      <option class="service-small">Volunteering</option>
      <option class="service-small">Partnership &amp; Support</option>
      <option class="service-small">Business Services</option>

  </select>
</div>