Как выровнять значок влево и центрировать текст по кнопке html? - PullRequest
1 голос
/ 11 апреля 2020

Как у вас может быть кнопка со значком, который выровнен по левому краю (крайний левый угол на кнопке) и текст по-прежнему центрирован по кнопке?

.GoogleSignIn{
    border-radius: 50px;
    padding: 10px;
    text-align: center;
    align-items: center;
    width: 100%;
    height: 42px;
    font-size: 14px;
    font-weight: 500;
    background-color: white;
    border: none;
    color: black;
    margin-bottom: 10px;
    cursor: pointer;
    outline: none;
    display: flex;
    /* justify-content: center; */
}
.GoogleIcon{
    margin: -40px 0px -12px -440%;
}
.GoogleIconContainer{
    align-self: flex-end;
    display: flex;
}
<button className={classes.GoogleSignIn}>
                    <div className = {classes.GoogleIconContainer}>
                        <img src={GoogleIcon} className = {classes.GoogleIcon}/>
                    </div>
                    Sign in with google
</button>

Ответы [ 2 ]

2 голосов
/ 11 апреля 2020

5 строк CSS кода и дополнительного интервала (для текста).

«Хитрость» заключается в том, чтобы установить flex-box child margin-right: auto (значок переместиться влево «pu * 1052» * effect ") & для диапазона (" pu sh ")

button{
  display: flex;  
  align-items: center;
  justify-content: center;
}
button img{
  margin-right: auto;
  border: 1px solid red;
}

button span{
  border: 1px solid red;
  margin-right: auto;
}
<button style="width: 100%;">
  <img src="https://svgshare.com/i/5vv.svg">
  <span>
    Hello world  
  </span>
</button>

<br>
<button style="width: 200px;">
  <img src="https://svgshare.com/i/5vv.svg">
  <span>
    Hello world  
  </span>
</button>

important Для получения «идеального выравнивания по горизонтали и влево» Не добавляйте никаких дополнительных верхних / нижних полей / отступов для содержимого внутри кнопки - иконка - или текст («Знаменитая» ошибка).

important-2 Удалить кнопку с фиксированной высотой (избежать проблем переполнения-y). Высота кнопки объявляется по содержимому (размер шрифта, изображение) и отступу / рамке ( box-model ). Если это действительно важно для вас, установите min-height (not height). пример разбитого фрагмента:

button{
  display: flex;  
  align-items: center;
  justify-content: center;
}
button img{
  margin-right: auto;
  border: 1px solid red;
}

button span{
  border: 1px solid red;
  margin-right: auto;
}
<button style="height: 20px;">
  <img src="https://svgshare.com/i/5vv.svg">
  <span style="font-size: 30px;">
    40px height ==> ovefrlow issues
  </span>
</button>

<br><br><br><br>

<button style="height: 30px; overflow-y: scroll">
  <img src="https://svgshare.com/i/5vv.svg">
  <span style="font-size: 40px;">
    40px height ==> ovefrlow issues
  </span>
</button>

Готово:)

Связано (Дополнительное чтение):

0 голосов
/ 11 апреля 2020

В качестве свойства display: flex в кнопке GoogleSignIn вы можете использовать justify-content: space-Между , чтобы указать расстояние между элементами. Также вам нужно добавить дополнительный элемент и скрыть его, используя непрозрачность: 0. Удалите дополнительное поле из класса GoogleIcon . Вы можете использовать этот трюк для выравнивания элементов.

Пожалуйста, найдите ниже рабочий пример. Я изменил className с классом, чтобы он работал.

.GoogleSignIn{
    border-radius: 50px;
    padding: 10px;
    text-align: center;
    align-items: center;
    width: 100%;
    height: 42px;
    font-size: 14px;
    font-weight: 500;
    background-color: white;
    border: none;
    color: black;
    margin-bottom: 10px;
    cursor: pointer;
    outline: none;
    display: flex;
    justify-content: space-between;
  
}

.GoogleIcon{
    /* margin: -40px 0px -12px -440%; */
}

.GoogleIconContainer{
    align-self: flex-end;
    display: flex;
}

.hiddenItem {
    opacity: 0;
}
<button class="GoogleSignIn">
        <div class="GoogleIconContainer">
            <img src="edit.png" class="GoogleIcon" />
        </div>
        <div class="GoogleIconText">
            Sign in with google
        </div>
        <div class="hiddenItem"> </div>
    
  </button>

Значок редактирования enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...