• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Środkowanie form po użyciu float

Object Storage Arubacloud
+1 głos
261 wizyt
pytanie zadane 5 lipca 2021 w HTML i CSS przez Szyszka Gaduła (3,490 p.)

Witam. Mam problem z wyśrodkowaniem <form> po użyciu left. Udało mi się to zrobić przy użyciu position: absolute, jednak stwarzało mi to trochę problemów. Strona wygląda tak:

I muszę sprawić, aby te <form> było na środku białej części ekranu bez użycia position: absolute. Całkowicie nie mam na to pomysłu. Kod wygląda tak:

plik html:

<div id="container">
    <div id="oblique">
        <img src="../../assets/img/logo.png">
    </div>
<form #registerForm="ngForm" (ngSubmit)="registerUser(registerForm);">
        <h1 id="motto">Everything <br><br>we can do, <br><br>is for you!</h1>
        <br><br>
        <mat-form-field appearance="fill" class="formField">
            <mat-label>E-mail</mat-label>
            <input type="email" matInput ngModel name="Email" required>
        </mat-form-field><br>
        <mat-form-field appearance="fill" class="formField">
            <mat-label>Username</mat-label>
            <input type="text" matInput ngModel name="UserName" required>
        </mat-form-field><br>
        <mat-form-field appearance="fill" class="formField">
            <mat-label>Password</mat-label>
            <input type="password" matInput ngModel required name="Password" [type]="hide ? 'password' : 'text'">
            <button mat-icon-button matSuffix (click)="hide = !hide" [attr.aria-label]="'Hide password'"
                [attr.aria-pressed]="hide">
                <mat-icon>{{hide ? 'visibility_off' : 'visibility'}}</mat-icon>
            </button>
        </mat-form-field><br>
        <mat-form-field appearance="fill" class="formField">
            <mat-label>Repeat password</mat-label>
            <input type="password" matInput ngModel required name="RepeatPassword" [type]="hide2 ? 'password' : 'text'">
            <button mat-icon-button matSuffix (click)="hide2 = !hide2" [attr.aria-label]="'Hide password'"
                [attr.aria-pressed]="hide2">
                <mat-icon>{{hide2 ? 'visibility_off' : 'visibility'}}</mat-icon>
            </button>
        </mat-form-field><br>
        <button mat-raised-button color="primary" type="submit">Register</button><br>
        <a href="user/login">Already have an account? Sign in</a>
    </form>
</div>

A CSS:

@media(max-height: 568px), (max-width: 820px) {
    #oblique, #oblique>img {
        display: none;
    }
}

@media(min-height: 568px), (min-width: 820px) {
    #oblique {
        float: left;
        border-top: 100vh solid #202020;
        border-right: 10vw solid transparent;
        width: 50vw;
        height: 0;
    }
    #oblique>img {
        position: absolute;
        top: 50%;
        left: 27.5%;
        transform: translate(-50%, -50%);
    }
}

.formField {
    width: 20vw;
    margin-bottom: 30px;
    max-width: 300px;
}

/*form {
    display: block;
    position: absolute;
    transform: translate(-50%, -50%);
    left: 80%;
    top: 50%;
    text-align: center;
}*/

form {
    float: left;
}

@media(max-height: 568px), (max-width: 820px) {
    form {
        position: static;
        left: 0;
        top: 0;
        transform: translate(0, 0);
    }
    .formField {
        width: 50vw;
    }
}

#motto {
    font-family: 'Just Another Hand', cursive;
    font-size: 72px;
    margin-top: 30px;
}

 

2 odpowiedzi

+4 głosów
odpowiedź 5 lipca 2021 przez wizarddos Nałogowiec (25,930 p.)
wybrane 6 lipca 2021 przez Szyszka
 
Najlepsza

może zamiast float:left spróbuj flexboxa i justify-content: center

komentarz 5 lipca 2021 przez Szyszka Gaduła (3,490 p.)
O, działa. Ale jak to teraz wyśrodkować w pionie?
2
komentarz 5 lipca 2021 przez SzkolnyAdmin Szeryf (86,360 p.)
0 głosów
odpowiedź 5 lipca 2021 przez VBService Ekspert (253,340 p.)
edycja 6 lipca 2021 przez VBService

Moim zdaniem, użycie grid-a i linear-gradient, znacząco uprości kod.  smiley

 

Propozycja

<div class="container">

  <div class="panel panel-left">
    <img src="../../assets/img/logo.png">
  </div>

  <div class="panel-middle"></div>

  <div class="panel panel-right">
    <div class="form-container">
      <h1 id="motto" class="motto">Everything <br><br>we can do, <br><br>is for you!</h1>

      <form #registerForm="ngForm" (ngSubmit)="registerUser(registerForm);">
        <mat-form-field appearance="fill" class="formField">
          <mat-label>E-mail</mat-label>
          <input type="email" matInput ngModel name="Email" required>
        </mat-form-field><br>
        <mat-form-field appearance="fill" class="formField">
          <mat-label>Username</mat-label>
          <input type="text" matInput ngModel name="UserName" required>
        </mat-form-field><br>
        <mat-form-field appearance="fill" class="formField">
          <mat-label>Password</mat-label>
          <input type="password" matInput ngModel required name="Password" [type]="hide ? 'password' : 'text'">
          <button mat-icon-button matSuffix (click)="hide = !hide" [attr.aria-label]="'Hide password'" [attr.aria-pressed]="hide">
            <mat-icon>{{hide ? 'visibility_off' : 'visibility'}}</mat-icon>
          </button>
        </mat-form-field><br>
        <mat-form-field appearance="fill" class="formField">
          <mat-label>Repeat password</mat-label>
          <input type="password" matInput ngModel required name="RepeatPassword" [type]="hide2 ? 'password' : 'text'">
          <button mat-icon-button matSuffix (click)="hide2 = !hide2" [attr.aria-label]="'Hide password'" [attr.aria-pressed]="hide2">
            <mat-icon>{{hide2 ? 'visibility_off' : 'visibility'}}</mat-icon>
          </button>
        </mat-form-field><br>
        <button mat-raised-button color="primary" type="submit">Register</button><br>
        <a href="user/login">Already have an account? Sign in</a>
      </form>

    </div>
  </div>

</div>
* {
  margin: 0;
  padding: 0;
  border: 0;
  box-sizing: border-box;
}
html, body {
  width: 100vw;
  height: 100vh;
}
.container {
  display: grid;
  grid-template-columns: 1fr 100px 1fr;
  grid-template-rows: 1fr;
  gap: 0px 0px;
  grid-auto-flow: row;
  grid-template-areas:
    "panel-left panel-middle panel-right";
 
  width: 100%;
  height: 100%;
 
  --panel-left-bg-color: #202020;
  --panel-right-bg-color: transparent;
}
.panel {
  display: flex;
  justify-content: center;
  align-items: center;
}
.panel-left { 
  grid-area: panel-left; 
  background-color: var(--panel-left-bg-color);
}
.panel-middle { 
  grid-area: panel-middle;
  background-image: linear-gradient(99deg, var(--panel-left-bg-color) 50%, var(--panel-right-bg-color) 51%);
}
.panel-right { 
  grid-area: panel-right;
  background-color: var(--panel-right-bg-color);
}
.panel-right .form-container {
  width: 40vw;
  max-width: 300px;
  border: 1px solid red; /* dla demonstracji do usunięcia */
}
.panel-right .motto {
  font-family: 'Just Another Hand', cursive;
  font-size: 3em;
}

 

komentarz 6 lipca 2021 przez Szyszka Gaduła (3,490 p.)
Fajnie to wygląda, ale raczej tego nie użyję, gdyż nie lubię używać tego czego kompletnie nie rozumiem. I raczej w bliskiej przyszłości się tego nie nauczę, ponieważ moim celem jest backend, a frontend to dla mnie taka "zmora" :). Ale dzięki!

Podobne pytania

0 głosów
2 odpowiedzi 742 wizyt
0 głosów
4 odpowiedzi 754 wizyt
pytanie zadane 1 października 2017 w HTML i CSS przez hakiros54 Obywatel (1,160 p.)
0 głosów
2 odpowiedzi 364 wizyt
pytanie zadane 27 sierpnia 2020 w HTML i CSS przez x_000 Obywatel (1,460 p.)

92,572 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...