Задать вопрос

Кнопка ниже input CSS HTML. Как исправить?

Здравствуйте, делаю калькулятор. Пока я не определил размер шрифта кнопок ввода (input) чисел, кнопка (button) никуда не уходила, но сейчас уходит. Т.е. если размер шрифта убрать с кнопок вода (input) то кнопка будет стоять ровненько и красивенько в ряду.
Надеюсь, вы поняли меня.
CSS:
@import url('https://fonts.googleapis.com/css2?family=Sono:wght@300&display=swap');
body{
    margin: 0;
    /* background-color: #d0e5b2; */
    background-color: #cfeea7;
}
body * {
    box-sizing: border-box;
}
header{
    position: relative;
    font-family: 'Sono', sans-serif;
    font-weight: bold;
    background-color: #00b9ff;
    height: calc(1.5vw + 1.5vh);
}
header article {
    position: relative;
    font-size: calc(1vw + 1vh);
    text-align: center;
}
input{
    position: relative;
    display: inline-flex;
    font-family: 'Sono', sans-serif;
    font-size: 3vw;
    margin: 0 auto;
    width: 18.81vw;
    height: 10.81vh;
    margin: 0.3vw;
    background-color: white;
    color: black;
    border: 0.3vw solid #cfeea7;
    border-radius: 0.3vw;
}
input:hover{
    border: 0.3vw solid #00b9ff;
}
button{
    position: relative;
    width: 18.7vw;
    height: 10.81vh;
    left: 0.3vw;
    margin-bottom: 0.3vw;
    padding: 0 auto;
    display: inline-block;
    border: 0.3vw solid #cfeea7;
    border-radius: 0.3vw;
}
button:hover{
    border: 0.3vw solid #00b9ff;
}
.fa-delete-left{
    position: relative;
    margin: 0 auto;
    margin: auto;
}
.bt_calc{
    position: relative;
    white-space:nowrap;
    margin: 0 auto;
    width: 79.24vw;
    top: 1vh;
}
.zero, .fake_primer, .primer, .error{
    text-align: end;
    margin-right: 13vw;
    font-family: 'Sono', sans-serif;
    margin-top: 5vh;
}
.error{
    color: #e30024;
}
#bt18, #bt20{
    width: 9.21vw;
}
#bt20{
    margin-left: 0.1vw;
}
@media screen and (max-width: 913px) {
    header{
        height: calc(2.5vw + 2.5vh);
    }
    header article{
        font-size: calc(1.7vw + 1.7vh);
    }
}

HTML:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://kit.fontawesome.com/3e8a6aa84f.js" crossorigin="anonymous"></script>
    <link rel="stylesheet" href="style2.css">
<script src="https://cdn.jsdelivr.net/npm/vue@2"></script>
<script src="script.js"></script>
</head>
<body>
      <div id="app">
        <header>
          <article>dvoryashin</article>
        </header>
        <h1 class="zero" v-if="zero">0</h1>
        <h1 class="fake_primer" v-if="show_fake_primer">{{fake_primer}}</h1>
        <h1 class="primer" v-else>{{primer}}</h1>
        <h1 class="error" v-if="show_vivod=true">{{vivod_err}}</h1>
        <!-- Комментарии здесь для того, чтобы кнопки были прижаты друг к другу. Подробнее: https://codepen.io/anon/pen/megQVe -->
        
        <div class="bt_calc"><!--
        --><input type="button" value="(" id="bt18" v-on:click="calc('(')"><!--
        --><input type="button" value=")" id="bt20" v-on:click="calc(')')"><!--
        --><input type="button" value="c" id="bt21" v-on:click="c()"><!--
        --><input type="button" value="=" id="bt17" v-on:click="ravno"><!--
        --><button value="back" id="bt19" v-on:click="back(app)">
          <i class="fa-solid fa-delete-left"></i>
        </button>
        <br><!--
        --><input type="button" value="7" id="bt1" class="calccifra" v-on:click="calc(7)"><!--
          --><input type="button" value="8" id="bt2" class="calccifra" v-on:click="calc(8)"><!--
          --><input type="button" value="9" id="bt3" class="calccifra" v-on:click="calc(9)"><!--
          --><input type="button" value="/" id="bt15" v-on:click="calc('/')">
          <br>
          <input type="button" value="4" id="bt4" class="calccifra" v-on:click="calc(4)"><!--
          --><input type="button" value="5" id="bt5" class="calccifra" v-on:click="calc(5)"><!--          
          --><input type="button" value="6" id="bt6" class="calccifra" v-on:click="calc(6)"><!--
          --><input type="button" value="*" id="bt11" v-on:click="calc('*')">
        
          <br>
          <input type="button" value="1" id="bt7" class="calccifra" v-on:click="calc(1)"><!--
          --><input type="button" value="2" id="bt8" class="calccifra" v-on:click="calc(2)"><!--
          --><input type="button" value="3" id="bt9" class="calccifra" v-on:click="calc(3)"><!--
          --><input type="button" value="-" id="bt13" v-on:click="calc('-')">
          <br>

          <input type="button" value="0" id="bt12" v-on:click="calc(0)"><!--
          --><input type="button" value="." id="bt15" v-on:click="calc('.')"><!--
          --><input type="button" value="%" id="bt15" v-on:click="procent()"><!--
          --><input type="button" value="+" id="bt14" v-on:click="calc('+')">
          <br>
          
        </div>
    
      </div>
      
</body>
<script>
    var app = new Vue({
        el: '#app',
        data: {
            //если zero = true то показывается нолик
            zero: true,
            // имитирует пример, который высчитывается через eval. Нужен для того, чтобы знак процента не выводился 
            fake_primer: "",
            // настоящий пример, который высчитывается
            primer: "",
            //вывод об ошибке
            vivod_err: "",
            //
            show_vivod: false,
            show_primer: false,
            show_fake_primer: true,
        },
        methods: {
          calc: function (value) {
            var primer = this.primer;
            this.zero = false;
            this.primer = String(this.primer);
            this.primer += value;
            this.fake_primer = String(this.fake_primer);
            this.fake_primer += value;
          },
          procent: function (){
            this.primer = String(this.primer);
            this.primer += '/100';
            this.fake_primer += '/100';
          },
          ravno: function (){
            try {
              this.primer = eval(this.primer);
              this.primer = String(this.primer);  
              this.show_vivod = true;
              this.fake_primer = this.primer;
              this.show_primer = true;
              this.show_fake_primer = false;
            } catch (err) {
              this.vivod_err = err;
              this.vivod_err = String(this.vivod_err);
              this.vivod_err = this.vivod_err.slice(6);
            }
            
          },
          back: function (){
            this.primer = this.primer.slice(0, -1);
            this.fake_primer = this.fake_primer.slice(0, -1);
            if(this.primer == ''){
              this.zero = true;
            }
          },  
          c: function () {
            this.primer = "";
            this.vivod = "";
            this.fake_primer = "";
            this.zero = true;
            this.vivod_err = "";
          },
        }
    })
    document.addEventListener('keydown', (event) => {
      const keyName = event.key;
      if(keyName === "/" || keyName === "*" || keyName === "-" || keyName === "+" || keyName === "." || keyName === "0" || keyName === "1" || keyName === "2" || keyName === "3" || keyName === "4" || keyName === "5" || keyName === "6" || keyName === "7" || keyName === "8" || keyName === "9" || keyName === "(" || keyName === ")"){
        app.calc(keyName);
        app.zero = false;
      }
      if(keyName === '%'){
        app.procent();
      }
      if (keyName === 'Backspace') {
        app.back();
      }
      if(keyName === 'Enter'){
        app.ravno();     
      }
      if(keyName === 'c'){
        app.c();
        app.zero = true;
      }
    })
</script>
</html>
  • Вопрос задан
  • 128 просмотров
Подписаться 1 Средний 6 комментариев
Пригласить эксперта
Ответы на вопрос 1
dvoryashin
@dvoryashin Автор вопроса
Ой
Кстати, если знайте, как сделать этот код почище, то предлагайте варианты.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы