DevAra
DevAra

Reputation: 530

How to add radio button next to label in bootstrap 4

I want to add my radio buttons after label. now it's displaying likewise

enter image description here

But I want to show it like this one

enter image description here

Updated
Here is my full code

    <div class="container">
    <div class="row">
        <div class="col-md-12">
            <div class="card">
                <div class="card-body">
                    <div class="row">
                        <div class="col-md-12">
                            <form [formGroup]="surveyQuestionForm">
                                <div class="form-group">
                                    <label class="control-label"> 1) What is the answer of 3 + 5?</label>
                                    <div class="ml-3">
                                        <div class=" custom-radio custom-control">
                                                <input type="checkbox" class="custom-control-input" id="q1_1" name="q1"
                                                value="1" formControlName="q1" />
                                            <label class="custom-control-label" for="q1_1">2</label>

                                        </div>
                                        <div class=" custom-radio custom-control">
                                            <input type="checkbox" class="custom-control-input" id="q1_2" name="q1"
                                                value="2" formControlName="q1" />
                                                <label class="custom-control-label" for="q1_2">5</label>
                                           </div>
                                        <div class=" custom-radio custom-control">
                                            <input type="checkbox" class="custom-control-input" id="q1_3" name="q1"
                                                value="3" formControlName="q1" />
                                                <label class="custom-control-label" for="q1_3">7</label>
                                            </div>
                                        <div class=" custom-radio custom-control">
                                            <input type="checkbox" class="custom-control-input" id="q1_4" name="q1"
                                                value="4" formControlName="q1" />
                                                <label class="custom-control-label" for="q1_4">3</label>

                                        </div>
                                        <div class=" custom-radio custom-control">
                                            <input type="checkbox" class="custom-control-input" id="q1_5" name="q1"
                                                value="5" formControlName="q1" />
                                                <label class="custom-control-label" for="q1_5">8</label>
                                             </div>
                                    </div>
                                </div>


                            </form>
                        </div>
                    </div>

                </div>
            </div>
        </div>
    </div>
</div>

I tried this way

<div class=" custom-radio custom-control">

                                              <label class="custom-control-label" for="q1_1">2
                                                  <input type="radio" class="custom-control-input" id="q1_1" name="q1"
                                                value="1" formControlName="q1" /></label>
                                          </div>

Then I can't check.It's not checking.

Update2

Here is the user863 gave way.If I use that method with a different question,then radio buttons show inside answers. if I change css values likewise,

.custom-control-label::after {
  left: 1.5rem!important;
}

Then It's showing correctly.But I can't manually change css.Because I don't know what is the length of an answer,It's not a same length for all questions.

.custom-control-label::before,
.custom-control-label::after {
  left: 1.5rem!important;
}
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">

<div class="container">
    <div class="row">
        <div class="col-md-12">
            <div class="card">
                <div class="card-body">
                    <div class="row">
                        <div class="col-md-12">
                            <form [formGroup]="surveyQuestionForm">
                                <div class="form-group">
                                    <label class="control-label"> 1) What is the country you would like to go?</label>
                                    <div class="ml-3">
                                      <div class=" custom-radio custom-control">
                                        <input type="radio" class="custom-control-input" id="q1_1" name="q1" value="1" formControlName="q1" />
                                        <label class="custom-control-label" for="q1_1">Australia</label>
                                      </div>
                                      <div class=" custom-radio custom-control">
                                        <input type="radio" class="custom-control-input" id="q1_2" name="q1" value="2" formControlName="q1" />
                                        <label class="custom-control-label" for="q1_2">England</label>
                                      </div>
                                      <div class=" custom-radio custom-control">
                                        <input type="radio" class="custom-control-input" id="q1_3" name="q1" value="3" formControlName="q1" />
                                        <label class="custom-control-label" for="q1_3">Canada</label>
                                      </div>
                                      <div class=" custom-radio custom-control">
                                        <input type="radio" class="custom-control-input" id="q1_4" name="q1" value="4" formControlName="q1" />
                                        <label class="custom-control-label" for="q1_4">India</label>
                                      </div>
                                       
                                    </div>
                                  </div>
                            </form>
                        </div>
                    </div>

                </div>
            </div>
        </div>
    </div>
</div>

Upvotes: 0

Views: 1758

Answers (2)

User863
User863

Reputation: 20039

Here is demo using custom css

.custom-control-label::before,
.custom-control-label::after {
  left: 1.5rem!important;
}
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">

<div class="form-group">
  <label class="control-label"> 1) What is the answer of 3 + 5?</label>
  <div class="ml-3">
    <div class=" custom-radio custom-control">
      <input type="radio" class="custom-control-input" id="q1_1" name="q1" value="1" formControlName="q1" />
      <label class="custom-control-label" for="q1_1">2</label>
    </div>
    <div class=" custom-radio custom-control">
      <input type="radio" class="custom-control-input" id="q1_2" name="q1" value="2" formControlName="q1" />
      <label class="custom-control-label" for="q1_2">5</label>
    </div>
    <div class=" custom-radio custom-control">
      <input type="radio" class="custom-control-input" id="q1_3" name="q1" value="3" formControlName="q1" />
      <label class="custom-control-label" for="q1_3">7</label>
    </div>
    <div class=" custom-radio custom-control">
      <input type="radio" class="custom-control-input" id="q1_4" name="q1" value="4" formControlName="q1" />
      <label class="custom-control-label" for="q1_4">3</label>
    </div>
    <div class=" custom-radio custom-control">
      <input type="radio" class="custom-control-input" id="q1_5" name="q1" value="5" formControlName="q1" />
      <label class="custom-control-label" for="q1_5">8</label>
    </div>
  </div>
</div>

UPDATE Moved to right, if you need an alignment use fixed width (as required)

.custom-control-label::before,
.custom-control-label::after {
  left: unset!important;
  right: -1.5rem!important;
}

.custom-control-label { 
  /*width: 100px;  (if alignment needed) */
}
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">

<div class="container">
  <div class="row">
    <div class="col-md-12">
      <div class="card">
        <div class="card-body">
          <div class="row">
            <div class="col-md-12">
              <form [formGroup]="surveyQuestionForm">
                <div class="form-group">
                  <label class="control-label"> 1) What is the country you would like to go?</label>
                  <div class="ml-3">
                    <div class=" custom-radio custom-control">
                      <input type="radio" class="custom-control-input" id="q1_1" name="q1" value="1" formControlName="q1" />
                      <label class="custom-control-label" for="q1_1">Australia</label>
                    </div>
                    <div class=" custom-radio custom-control">
                      <input type="radio" class="custom-control-input" id="q1_2" name="q1" value="2" formControlName="q1" />
                      <label class="custom-control-label" for="q1_2">England</label>
                    </div>
                    <div class=" custom-radio custom-control">
                      <input type="radio" class="custom-control-input" id="q1_3" name="q1" value="3" formControlName="q1" />
                      <label class="custom-control-label" for="q1_3">Canada</label>
                    </div>
                    <div class=" custom-radio custom-control">
                      <input type="radio" class="custom-control-input" id="q1_4" name="q1" value="4" formControlName="q1" />
                      <label class="custom-control-label" for="q1_4">India</label>
                    </div>

                  </div>
                </div>
              </form>
            </div>
          </div>

        </div>
      </div>
    </div>
  </div>
</div>

Upvotes: 1

kcsujeet
kcsujeet

Reputation: 522

if you want to calculate sum then you'll need to use checkbox because only one radion button can be selected at a time. Reference: https://www.w3schools.com/tags/att_input_type_radio.asp

<div class="container">
  <div class="row">
    <div class="col-md-12">
      <div class="card">
        <div class="card-body">
          <div class="row">
            <div class="col-md-12">
              <form [formGroup]="surveyQuestionForm">
                <div class="form-group">
                  <label class="control-label"> 1) What is the answer of 3 + 5?</label>
                  <div class="ml-3">
                    <div class=" custom-radio custom-control">
                      <input type="checkbox" class="custom-control-input" id="q1_1" name="q1" value="1" formControlName="q1" />
                      <label class="custom-control-label" for="q1_1">2</label>

                    </div>
                    <div class=" custom-radio custom-control">
                      <input type="checkbox" class="custom-control-input" id="q1_2" name="q1" value="2" formControlName="q1" />
                      <label class="custom-control-label" for="q1_2">5</label>
                    </div>
                    <div class=" custom-radio custom-control">
                      <input type="checkbox" class="custom-control-input" id="q1_3" name="q1" value="3" formControlName="q1" />
                      <label class="custom-control-label" for="q1_3">7</label>
                    </div>
                    <div class=" custom-radio custom-control">
                      <input type="checkbox" class="custom-control-input" id="q1_4" name="q1" value="4" formControlName="q1" />
                      <label class="custom-control-label" for="q1_4">3</label>

                    </div>
                    <div class=" custom-radio custom-control">
                      <input type="checkbox" class="custom-control-input" id="q1_5" name="q1" value="5" formControlName="q1" />
                      <label class="custom-control-label" for="q1_5">8</label>
                    </div>
                  </div>
                </div>


              </form>
            </div>
          </div>

        </div>
      </div>
    </div>
  </div>
</div>

Upvotes: 0

Related Questions