Div mengambang kanan sesekali terdorong keluar dari keselarasan - masalah template sudutjs?

Saya memiliki div kanan mengambang di dalam templat yang dimuat dengan benar saat pemuatan halaman awal atau penyegaran paksa.

Namun, pada perubahan status (menggunakan ui-router) lalu kembali (yaitu menukar template), div akan terbentur ke bawah, dengan apa yang tampak seperti div di sebelah kirinya tanpa float.

Apakah saya salah menerapkan CSS?

Cuplikan layar terlampir dari kedua skenario. Gambar pertama adalah pemuatan awal, kedua adalah halaman (template NG) yang dikembalikan setelah keluar melalui link di halaman. Tautan juga merupakan templat. Satu-satunya alasan saya menyebutkan NG adalah karena saya mencoba membuat ulang di Plunker dengan konvensional tautan href, dan gagal mendapatkan kesalahan.

HTML

    <div class="locate-change">
      <input type="text" color="red" placeholder="ENTER LOCATION" class="input1" />
      <a ng-click="locateme()" href="/id" class="locate2">LOCATE</a>
    </div>

CSS

.locate-change {
    float:right;
    height: 35px;
    padding-left: 10px;
    width: 300px;
}
.input1 {
    display:inline-block;
    border: 1px solid red;
    background: #000000;
    text-transform: uppercase;
    font-family:'DINLightRegular', Helvetica, Arial, sans-serif;
    font-size: 1em;
    margin: 0;
    padding: 4px;
    outline: none;
    width:160px;
}
.locate2 {
    float: right;
    padding-left:35px;
    background: url(../../images/locate.png);
    height: 30px;
    background-size: cover;
    background-size: 30px;
    background-repeat:no-repeat;
    width:65px;
}

Saya dapat membuat ulang plunker sudutjs jika perlu.

Pemuatan halaman awal - tata letak yang benar

Halaman kembali - dimuat melalui NG

EDIT beberapa catatan:
- ini hanya terjadi di Chrome, bukan di FF atau Safari
- div input 'Ubah Kota' menggunakan tipe Angular UI Bootstrap yang sepertinya menambahkan div kelas .dropdown-menu - tetapi memiliki dimensi nol (lihat tangkapan layar di bawah)
- kode div hasil dropdown typeahead yang kosong muncul dan identik dalam keadaan benar dan salah

div tarik-turun


person Ben    schedule 02.04.2015    source sumber
comment
akan sangat membantu jika Anda memposting CSS yang terkait dengan elemen ini   -  person Ronnie    schedule 02.04.2015
comment
@Ronnie - saya telah menambahkan CSS yang relevan ke pertanyaan - itu juga disertakan dalam Plunker   -  person Ben    schedule 02.04.2015
comment
bisakah Anda mengunggah apa yang Anda miliki di suatu tempat daripada di plnkr sehingga saya dapat melihatnya? Kecuali Anda dapat membuatnya kembali di plnkr   -  person Ronnie    schedule 02.04.2015
comment
sudahkah Anda mencoba memberikan vertical-align: top pada input dan tautan?   -  person Alvaro Menéndez    schedule 03.04.2015
comment
@AlvaroMenéndez - mencobanya, tetapi tidak ada perubahan.   -  person Ben    schedule 03.04.2015
comment
Kalau begitu, karena keterbatasanku, aku tidak bisa membantumu. Saya yakin ada orang-orang luar biasa di sekitar yang dapat menebak apa yang terjadi tetapi terbatas karena saya memerlukan biola, serupa, atau web langsung untuk mereplikasi masalah sehingga kami dapat mencoba menemukan perbaikan. (karena kode Anda di plunker tidak dapat ). semoga beruntung   -  person Alvaro Menéndez    schedule 03.04.2015
comment
Tampaknya kami telah mengatasi kesalahan tersebut. Saya menukar urutan 2 div di html dan tidak lagi menekan div loc2 ke bawah. Akan mengikuti ini dengan jawaban, dan teori.   -  person Ben    schedule 03.04.2015


Jawaban (1)


Saya pikir ini adalah bug dalam cara Chrome memperlakukan angular-ui bootstrap typeahead arahan (berdasarkan fakta bahwa kami tidak melihat kesalahan ini di FF atau Safari)

Urutan hal yang terjadi tampaknya adalah:
- pada pemuatan awal, DOM hanya memuat elemen html/CSS yang ada
- setelah DOM dimuat, direktif ng kemudian menambahkan div dropdown typeahead yang kosong, yang berada ' di bawah' div loc2 di layar meskipun ditulis di DOM di antara div yang ada

yaitu saat browser membaca DOM yang ditempatkannya:
- input div ke-1
- find2 div ke-2
- div dropdown tak kasat mata ditambahkan terakhir melalui arahan

Saat kembali ke halaman melalui ui-router:
- DOM sekarang menyertakan elemen dropdown tambahan antara input dan div lokasi2
- setiap elemen html diperlakukan sesuai urutan pembacaannya di DOM
- ini berarti bahwa div tarik-turun 'tidak terlihat' sekarang menyingkirkan div lokasi...(di Chrome)

yaitu saat browser membaca DOM saat kembali ke templat yang ditempatkannya:
- masukan div ke-1
- div tarik-turun tak terlihat ke-2
- lokasi2 div ke-3

Untuk alasan apa pun, Chrome memperlakukan dropdown bukan sebagai div tersembunyi, tetapi sebagai div terlihat (?) yang diciutkan dan mendorong div loc2 keluar dari tempatnya.

Saat memindahkan div loc2 ke sebelum div ubah kota, kode dropdown yang dimasukkan tidak lagi mengganggu div loc2.

Dalam 'perbaikan', saat browser membaca DOM, ia menempatkan:
- lokasi2 div ke-1
- input div ke-2
- div tarik-turun tak kasat mata ke-3

masukkan deskripsi gambar di sini

person Ben    schedule 02.04.2015