div ด้านขวาลอยถูกผลักออกจากการจัดตำแหน่งเป็นระยะ ๆ - ปัญหาเทมเพลต angularjs หรือไม่

ฉันมี div ที่ถูกต้องภายในเทมเพลตที่โหลดอย่างถูกต้องเมื่อโหลดหน้าเริ่มต้นหรือรีเฟรชอย่างหนัก

อย่างไรก็ตามในการเปลี่ยนแปลงสถานะ (โดยใช้ ui-router) จากนั้นส่งคืน (เช่น การสลับเทมเพลตออก) div จะถูกกระแทกลง โดยสิ่งที่ดูเหมือน div ทางด้านซ้ายโดยไม่มีการลอย

ฉันใช้ CSS ไม่ถูกต้องหรือไม่?

ภาพหน้าจอที่แนบมาของทั้งสองสถานการณ์ ภาพแรกคือการโหลดครั้งแรก ภาพที่สองคือหน้า (เทมเพลต NG) ที่ส่งคืนหลังจากออกผ่านลิงก์บนหน้า ลิงค์ก็เป็นเทมเพลตเช่นกัน เหตุผลเดียวที่ฉันพูดถึง NG ก็คือฉันพยายามสร้างใหม่ใน Plunker ด้วยแบบธรรมดา ลิงก์ href และไม่ได้รับข้อผิดพลาด

HTML

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

ซีเอสเอส

.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;
}

ฉันสามารถสร้าง plunker เชิงมุม js ขึ้นมาใหม่ได้หากจำเป็น

การโหลดหน้าเริ่มต้น - รูปแบบที่ถูกต้อง

หน้าที่กลับมา - โหลดผ่าน NG

แก้ไข หมายเหตุสองสามข้อ:
- สิ่งนี้เกิดขึ้นใน Chrome เท่านั้น ไม่ใช่ใน FF หรือ Safari
- div อินพุต 'เปลี่ยนเมือง' ใช้ Angular UI Bootstrap typeahead ซึ่งดูเหมือนว่าจะเพิ่ม .dropdown-menu class div - แต่มีขนาดเป็นศูนย์ (ดูภาพหน้าจอด้านล่าง)
- รหัส div ผลลัพธ์แบบเลื่อนลง typeahead ที่ว่างเปล่าปรากฏขึ้นและเหมือนกันทั้งในสถานะที่ถูกต้องและไม่ถูกต้อง

dropdown div


person Ben    schedule 02.04.2015    source แหล่งที่มา
comment
มันจะมีประโยชน์หากคุณโพสต์ CSS ที่เกี่ยวข้องกับองค์ประกอบเหล่านี้   -  person Ronnie    schedule 02.04.2015
comment
@Ronnie - ฉันได้เพิ่ม CSS ที่เกี่ยวข้องให้กับคำถามแล้ว - มันรวมอยู่ใน Plunker ด้วย   -  person Ben    schedule 02.04.2015
comment
คุณช่วยอัปโหลดสิ่งที่คุณมีที่ไหนสักแห่งแทน plnkr เพื่อให้ฉันดูได้ไหม เว้นแต่ว่าคุณสามารถสร้างมันขึ้นมาใหม่ใน plnkr ได้   -  person Ronnie    schedule 02.04.2015
comment
คุณได้ลองจัดแนวตั้ง: ด้านบนทั้งอินพุตและลิงก์แล้วหรือยัง?   -  person Alvaro Menéndez    schedule 03.04.2015
comment
@ AlvaroMenéndez - ลองแล้ว แต่ไม่มีการเปลี่ยนแปลง   -  person Ben    schedule 03.04.2015
comment
ถ้าอย่างนั้นฉันก็ถูกจำกัดเพราะฉันช่วยคุณไม่ได้ ฉันแน่ใจว่ามีคนที่น่าทึ่งอยู่รอบ ๆ ซึ่งสามารถเดาได้ว่าเกิดอะไรขึ้นแต่ถูกจำกัด เนื่องจากฉันเป็น ฉันต้องการเว็บซอ คล้ายกัน หรือถ่ายทอดสดเพื่อจำลองปัญหา เพื่อที่เราจะได้ลองค้นหาวิธีแก้ไขไม่ได้ (เนื่องจากโค้ดของคุณใน plunker ไม่สามารถทำได้ ). ขอให้โชคดี   -  person Alvaro Menéndez    schedule 03.04.2015
comment
ดูเหมือนว่าเราจะแก้ไขข้อผิดพลาดแล้ว ฉันสลับลำดับของ 2 div ใน html และไม่ได้รับการเลื่อนตำแหน่ง 2 div ลงอีกต่อไป จะตามมาด้วยคำตอบและทฤษฎี   -  person Ben    schedule 03.04.2015


คำตอบ (1)


ฉันคิดว่านี่เป็นข้อบกพร่องในวิธีที่ Chrome ปฏิบัติต่อ typeahead bootstrap เชิงมุม-ui คำสั่ง (ขึ้นอยู่กับข้อเท็จจริงที่ว่าเราไม่เห็นข้อผิดพลาดนี้ใน FF หรือ Safari)

ลำดับสิ่งที่เกิดขึ้นดูเหมือนจะเป็น:
- ในการโหลดครั้งแรก DOM จะโหลดเฉพาะองค์ประกอบ html/CSS ที่มีอยู่เท่านั้น
- เมื่อโหลด DOM แล้ว คำสั่ง ng จะเพิ่ม div แบบเลื่อนลง typeahead ว่างซึ่งอยู่ที่ ' ด้านล่าง 'locate2 div บนหน้าจอแม้จะถูกเขียนใน DOM ระหว่าง div ที่มีอยู่ก็ตาม

เช่นในขณะที่เบราว์เซอร์อ่านผ่าน DOM จะวาง:
- อินพุต div 1st
- ค้นหา 2 div 2nd
- div แบบเลื่อนลงที่มองไม่เห็นเพิ่มครั้งล่าสุดผ่านคำสั่ง

เมื่อกลับมาที่เพจผ่าน ui-router:
- ขณะนี้ DOM ได้รวมองค์ประกอบแบบเลื่อนลงเพิ่มเติมระหว่างอินพุตและระบุตำแหน่ง 2 div
- แต่ละองค์ประกอบ html ได้รับการปฏิบัติตามลำดับที่อ่านใน DOM
- ซึ่งหมายความว่า ว่า div แบบเลื่อนลงที่ 'มองไม่เห็น' ตอนนี้ผลัก div div ออกไปให้พ้นทาง ... (ใน Chrome)

เช่น ขณะที่เบราว์เซอร์อ่าน DOM เมื่อกลับไปยังเทมเพลต จะวาง:
- อินพุต div 1st
- เมนูแบบเลื่อนลงที่มองไม่เห็น div 2nd
- ค้นหา2 div 3rd

ไม่ว่าด้วยเหตุผลใดก็ตาม Chrome ถือว่าดรอปดาวน์ไม่ใช่ div ที่ซ่อนอยู่ แต่เป็น div ที่มองเห็นได้ (?) ที่ยุบแล้วและผลัก locate2 div ออกจากตำแหน่ง

เมื่อย้าย location2 div ไปก่อนหน้า change-city div โค้ดแบบเลื่อนลงที่แทรกไว้จะไม่รบกวนการ location2 div อีกต่อไป

ใน 'แก้ไข' เมื่อเบราว์เซอร์อ่านผ่าน DOM จะวาง:
- ค้นหา 2 div 1st
- อินพุต div 2nd
- ดรอปดาวน์ที่มองไม่เห็น div 3rd

ป้อนคำอธิบายรูปภาพที่นี่

person Ben    schedule 02.04.2015