繁体   English   中英

水平和垂直对齐伪元素的内容

[英]align content from pseudo elements horizontally and vertically

我有以下css单选按钮,但它们没有对齐。

我想知道如何正确地水平和垂直对齐较大圆圈中的较小圆圈。

 .container { position: absolute; z-index: 10; display: -ms-flexbox; display: flex; align-items: center; left: 1.25rem!important; } .radio-group__fieldset { border: none; padding: 0; } .radio-group__options__container { display: flex; } .radio__container { margin-bottom: 0; position: relative; } .radio__container input[type=radio] { position: absolute; cursor: pointer; left: 0; top: 0; z-index: 1; margin: 0; zoom: 1; opacity: 0; } .radio__container input[type=radio]:checked+label::after { opacity: 1; } .radio__container label { position: relative; font-weight: 400; color: inherit; display: -ms-flexbox; display: flex; align-items: center; font-size: 1.25rem; } .radio__container label::before { content: ""; border: 3px solid #0065bd; border-radius: 50%; } .radio__container label::after { content: ""; position: absolute; background-color: #0065bd; border: none; text-align: center; border-radius: 50%; opacity: 0; } .radio__inline label { margin-right: 0.625rem; } .radio__container.radio__inline label .radio__content { margin-left: 0.625rem; } .radio__container.radio__small input[type=radio], .radio__container.radio__small label::after, .radio__container.radio__small label::before { width: 13px; height: 13px; } .radio__container.radio__small label::before { border-width: 2px; border-radius: 50%; } .radio__container.radio__small label:after { transform: scale(0.8); } .radio__content { display: inline-block; vertical-align: middle; position: relative; top: 10%; } 
 <div class="container"> <fieldset class="radio-group__fieldset undefined"> <div class="radio-group__options__container pan-zoom-tree__dependency-filter"> <div class="radio__container radio__small radio__inline"> <input id="depndency-view-0" name="depndency-view" type="radio" value="Activities" checked=""> <label for="depndency-view-0"> <div class="radio__content">Activities</div> </label> </div> <div class="radio__container radio__small radio__inline"> <input id="depndency-view-1" name="depndency-view" type="radio" value="Suppliers"> <label for="depndency-view-1"> <div class="radio__content">Suppliers</div> </label> </div> </div> </fieldset> </div> 

你可以像这样轻松地做:

 input { display: none; } label { display: flex; position: relative; padding-left: 30px; align-items: center; line-height: 30px; } label::before { content: ''; position: absolute; left: 0; width: 20px; height: 20px; border-radius: 50%; border: 2px solid blue; } input#r1:checked ~ #l1::before { background: radial-gradient(blue 0%, blue 40%, transparent 50%, transparent 100%); } input#r2:checked ~ #l2::before { background: radial-gradient(blue 0%, blue 40%, transparent 50%, transparent 100%); } 
 <input type="radio" id="r1" name="inp"> <input type="radio" id="r2" name="inp"> <label for="r1" id="l1">Radio1</label> <label for="r2" id="l2">Radio2</label> 

这是@ TemaniAfif更简化的方式而不是radial-gradient背景。

 input { display: none; } label { display: flex; position: relative; padding-left: 30px; align-items: center; line-height: 30px; } label::before { content: ''; position: absolute; left: 0; width: 20px; height: 20px; border-radius: 50%; border: 2px solid blue; padding: 3px; box-sizing:border-box; } input#r1:checked ~ #l1::before, input#r2:checked ~ #l2::before{ background:blue content-box; } 
 <input type="radio" id="r1" name="inp"> <input type="radio" id="r2" name="inp"> <label for="r1" id="l1">Radio1</label> <label for="r2" id="l2">Radio2</label> 

您可以尝试修改此规则,如下所示:

.radio__container label::after {
  content: "";
  position: absolute;
  background-color: #0065bd;
  border: none;
  border-radius: 50%;
  opacity: 0;
  left: 2px; /*This is the modification */
 }

片段:

 .container { position: absolute; z-index: 10; display: -ms-flexbox; display: flex; align-items: center; left: 1.25rem!important; } .radio-group__fieldset { border: none; padding: 0; } .radio-group__options__container { display: flex; } .radio__container { margin-bottom: 0; position: relative; } .radio__container input[type=radio] { position: absolute; cursor: pointer; left: 0; top: 0; z-index: 1; margin: 0; zoom: 1; opacity: 0; } .radio__container input[type=radio]:checked+label::after { opacity: 1; } .radio__container label { position: relative; font-weight: 400; color: inherit; display: -ms-flexbox; display: flex; align-items: center; font-size: 1.25rem; } .radio__container label::before { content: ""; border: 3px solid #0065bd; border-radius: 50%; } .radio__container label::after { content: ""; position: absolute; background-color: #0065bd; border: none; text-align: center; border-radius: 50%; opacity: 0; left:2px; } .radio__inline label { margin-right: 0.625rem; } .radio__container.radio__inline label .radio__content { margin-left: 0.625rem; } .radio__container.radio__small input[type=radio], .radio__container.radio__small label::after, .radio__container.radio__small label::before { width: 13px; height: 13px; } .radio__container.radio__small label::before { border-width: 2px; border-radius: 50%; } .radio__container.radio__small label:after { transform: scale(0.8); } .radio__content { display: inline-block; vertical-align: middle; position: relative; top: 10%; } 
 <div class="container"> <fieldset class="radio-group__fieldset undefined"> <div class="radio-group__options__container pan-zoom-tree__dependency-filter"> <div class="radio__container radio__small radio__inline"> <input id="depndency-view-0" name="depndency-view" type="radio" value="Activities" checked=""> <label for="depndency-view-0"> <div class="radio__content">Activities</div> </label> </div> <div class="radio__container radio__small radio__inline"> <input id="depndency-view-1" name="depndency-view" type="radio" value="Suppliers"> <label for="depndency-view-1"> <div class="radio__content">Suppliers</div> </label> </div> </div> </fieldset> </div> 

 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous"> </head> <body style="height:900px"> <div class="container-fluid mt-3"> <form> <div class="custom-control custom-radio"> <input type="radio" class="custom-control-input" id="customRadio1" name="customRadio2"> <label class="custom-control-label" for="customRadio1">RadioButton</label> </div> <div class="custom-control custom-radio"> <input type="radio" class="custom-control-input" id="customRadio2" name="customRadio2"> <label class="custom-control-label" for="customRadio2">RadioButton</label> </div> </body> </html> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM