CSS:图例与字段集在同一行

时间:2019-03-11 16:23:16

标签: html css

我有一个星级评定系统,我想在上面加上一些图例(所以它不仅是星星图标)。

当我使用Bootstrap4时,我正在考虑使用一行,并使用2个cols将它们水平对齐,但是,我的图例一直在星星上方得到一些像素。

我还尝试在图例上使用margin-top: 10px,但效果不理想。

@import url(//netdna.bootstrapcdn.com/font-awesome/3.2.1/css/font-awesome.css);

        fieldset, label {
            margin: 0;
            padding: 0;
        }

        body {
            margin: 20px;
        }

        h1 {
            font-size: 1.5em;
            margin: 10px;
        }

        /****** Style Star Rating Widget *****/

        .rating {
            border: none;
            float: left;
        }

        .rating > input {
            display: none;
        }

        .rating > label:before {
            margin: 5px;
            font-size: 1.25em;
            font-family: FontAwesome;
            display: inline-block;
            content: "\f005";
        }

        .rating > .half:before {
            content: "\f089";
            position: absolute;
        }

        .rating > label {
            color: #ddd;
            float: right;
        }

        /***** CSS Magic to Highlight Stars on Hover *****/

        .rating > input:checked ~ label, /* show gold star when clicked */
        .rating:not(:checked) > label:hover, /* hover current star */
        .rating:not(:checked) > label:hover ~ label {
            color: #FFD700;
        }

        /* hover previous stars in list */

        .rating > input:checked + label:hover, /* hover current star when changing rating */
        .rating > input:checked ~ label:hover,
        .rating > label:hover ~ input:checked ~ label, /* lighten current selection */
        .rating > input:checked ~ label:hover ~ label {
            color: #FFED85;
        }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="row">

                            <div class="col-md-12 col-lg-12">
                                <fieldset class="rating hidden text-center">
                                    <legend>Califícanos: </legend>
                                    <input type="radio" id="star5" name="rating" value="5"/><label class="full"
                                                                                                   for="star5"
                                                                                                   title="Awesome - 5 stars"></label>
                                    <input type="radio" id="star4half" name="rating" value="4.5"/><label class="half"
                                                                                                         for="star4half"
                                                                                                         title="Pretty good - 4.5 stars"></label>
                                    <input type="radio" id="star4" name="rating" value="4"/><label class="full"
                                                                                                   for="star4"
                                                                                                   title="Pretty good - 4 stars"></label>
                                    <input type="radio" id="star3half" name="rating" value="3.5"/><label class="half"
                                                                                                         for="star3half"
                                                                                                         title="Meh - 3.5 stars"></label>
                                    <input type="radio" id="star3" name="rating" value="3"/><label class="full"
                                                                                                   for="star3"
                                                                                                   title="Meh - 3 stars"></label>
                                    <input type="radio" id="star2half" name="rating" value="2.5"/><label class="half"
                                                                                                         for="star2half"
                                                                                                         title="Kinda bad - 2.5 stars"></label>
                                    <input type="radio" id="star2" name="rating" value="2"/><label class="full"
                                                                                                   for="star2"
                                                                                                   title="Kinda bad - 2 stars"></label>
                                    <input type="radio" id="star1half" name="rating" value="1.5"/><label class="half"
                                                                                                         for="star1half"
                                                                                                         title="Meh - 1.5 stars"></label>
                                    <input type="radio" id="star1" name="rating" value="1"/><label class="full"
                                                                                                   for="star1"
                                                                                                   title="Sucks big time - 1 star"></label>
                                    <input type="radio" id="starhalf" name="rating" value="0.5"/><label class="half"
                                                                                                        for="starhalf"
                                                                                                        title="Sucks big time - 0.5 stars"></label>
                                </fieldset>
                            </div>
                        </div>

https://codepen.io/anon/pen/GevVYZ

enter image description here

我也尝试使用span标签:

@import url(//netdna.bootstrapcdn.com/font-awesome/3.2.1/css/font-awesome.css);

        fieldset, label {
            margin: 0;
            padding: 0;
        }

        body {
            margin: 20px;
        }

        h1 {
            font-size: 1.5em;
            margin: 10px;
        }

        /****** Style Star Rating Widget *****/

        .rating {
            border: none;
            float: left;
        }

        .rating > input {
            display: none;
        }

        .rating > label:before {
            margin: 5px;
            font-size: 1.25em;
            font-family: FontAwesome;
            display: inline-block;
            content: "\f005";
        }

        .rating > .half:before {
            content: "\f089";
            position: absolute;
        }

        .rating > label {
            color: #ddd;
            float: right;
        }

        /***** CSS Magic to Highlight Stars on Hover *****/

        .rating > input:checked ~ label, /* show gold star when clicked */
        .rating:not(:checked) > label:hover, /* hover current star */
        .rating:not(:checked) > label:hover ~ label {
            color: #FFD700;
        }

        /* hover previous stars in list */

        .rating > input:checked + label:hover, /* hover current star when changing rating */
        .rating > input:checked ~ label:hover,
        .rating > label:hover ~ input:checked ~ label, /* lighten current selection */
        .rating > input:checked ~ label:hover ~ label {
            color: #FFED85;
        }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="row">
                            <div class="col-md-6 col-lg-6">
                                <span class="calificanos-text hidden">Califícanos: </span>
                            </div>
                            <div class="col-md-6 col-lg-6">
                                <fieldset class="rating hidden text-center">

                                    <input type="radio" id="star5" name="rating" value="5"/><label class="full"
                                                                                                   for="star5"
                                                                                                   title="Awesome - 5 stars"></label>
                                    <input type="radio" id="star4half" name="rating" value="4.5"/><label class="half"
                                                                                                         for="star4half"
                                                                                                         title="Pretty good - 4.5 stars"></label>
                                    <input type="radio" id="star4" name="rating" value="4"/><label class="full"
                                                                                                   for="star4"
                                                                                                   title="Pretty good - 4 stars"></label>
                                    <input type="radio" id="star3half" name="rating" value="3.5"/><label class="half"
                                                                                                         for="star3half"
                                                                                                         title="Meh - 3.5 stars"></label>
                                    <input type="radio" id="star3" name="rating" value="3"/><label class="full"
                                                                                                   for="star3"
                                                                                                   title="Meh - 3 stars"></label>
                                    <input type="radio" id="star2half" name="rating" value="2.5"/><label class="half"
                                                                                                         for="star2half"
                                                                                                         title="Kinda bad - 2.5 stars"></label>
                                    <input type="radio" id="star2" name="rating" value="2"/><label class="full"
                                                                                                   for="star2"
                                                                                                   title="Kinda bad - 2 stars"></label>
                                    <input type="radio" id="star1half" name="rating" value="1.5"/><label class="half"
                                                                                                         for="star1half"
                                                                                                         title="Meh - 1.5 stars"></label>
                                    <input type="radio" id="star1" name="rating" value="1"/><label class="full"
                                                                                                   for="star1"
                                                                                                   title="Sucks big time - 1 star"></label>
                                    <input type="radio" id="starhalf" name="rating" value="0.5"/><label class="half"
                                                                                                        for="starhalf"
                                                                                                        title="Sucks big time - 0.5 stars"></label>
                                </fieldset>
                            </div>
                        </div>

https://codepen.io/anon/pen/rRGBvB

这是我在html(localhost)中看到的:

我在本地看到的东西

enter image description here

1 个答案:

答案 0 :(得分:1)

我将它们全部包装在div col6中,并设置为显示flex,然后在.rating> label:before中删除了5px的空白边

        @import url(//netdna.bootstrapcdn.com/font-awesome/3.2.1/css/font-awesome.css);
/* NEW */
.col-md-6.col-lg-6 {
    display: flex;
}
 .rating > label:before {
            
            font-size: 1.25em;
            font-family: FontAwesome;
            display: inline-block;
            content: "\f005";
        }
/* END */
        fieldset, label {
            margin: 0;
            padding: 0;
        }

        body {
            margin: 20px;
        }

        h1 {
            font-size: 1.5em;
            margin: 10px;
        }

        /****** Style Star Rating Widget *****/

        .rating {
            border: none;
            float: left;
        }

        .rating > input {
            display: none;
        }

       

        .rating > .half:before {
            content: "\f089";
            position: absolute;
        }

        .rating > label {
            color: #ddd;
            float: right;
        }

        /***** CSS Magic to Highlight Stars on Hover *****/

        .rating > input:checked ~ label, /* show gold star when clicked */
        .rating:not(:checked) > label:hover, /* hover current star */
        .rating:not(:checked) > label:hover ~ label {
            color: #FFD700;
        }

        /* hover previous stars in list */

        .rating > input:checked + label:hover, /* hover current star when changing rating */
        .rating > input:checked ~ label:hover,
        .rating > label:hover ~ input:checked ~ label, /* lighten current selection */
        .rating > input:checked ~ label:hover ~ label {
            color: #FFED85;
        }
 <div class="row">
                            <div class="col-md-6 col-lg-6">
                                <span class="calificanos-text hidden">Califícanos: </span>
                           
                                <fieldset class="rating hidden text-center">

                                    <input type="radio" id="star5" name="rating" value="5"/><label class="full"
                                                                                                   for="star5"
                                                                                                   title="Awesome - 5 stars"></label>
                                    <input type="radio" id="star4half" name="rating" value="4.5"/><label class="half"
                                                                                                         for="star4half"
                                                                                                         title="Pretty good - 4.5 stars"></label>
                                    <input type="radio" id="star4" name="rating" value="4"/><label class="full"
                                                                                                   for="star4"
                                                                                                   title="Pretty good - 4 stars"></label>
                                    <input type="radio" id="star3half" name="rating" value="3.5"/><label class="half"
                                                                                                         for="star3half"
                                                                                                         title="Meh - 3.5 stars"></label>
                                    <input type="radio" id="star3" name="rating" value="3"/><label class="full"
                                                                                                   for="star3"
                                                                                                   title="Meh - 3 stars"></label>
                                    <input type="radio" id="star2half" name="rating" value="2.5"/><label class="half"
                                                                                                         for="star2half"
                                                                                                         title="Kinda bad - 2.5 stars"></label>
                                    <input type="radio" id="star2" name="rating" value="2"/><label class="full"
                                                                                                   for="star2"
                                                                                                   title="Kinda bad - 2 stars"></label>
                                    <input type="radio" id="star1half" name="rating" value="1.5"/><label class="half"
                                                                                                         for="star1half"
                                                                                                         title="Meh - 1.5 stars"></label>
                                    <input type="radio" id="star1" name="rating" value="1"/><label class="full"
                                                                                                   for="star1"
                                                                                                   title="Sucks big time - 1 star"></label>
                                    <input type="radio" id="starhalf" name="rating" value="0.5"/><label class="half"
                                                                                                        for="starhalf"
                                                                                                        title="Sucks big time - 0.5 stars"></label>
                                </fieldset>
                            </div>
                        </div>