2011-11-25 21 views
6

Tôi đã thêm tiêu điểm css vào trường nhập. trong đó có một phong cách mặc định trong đó có biên giới và bóng tối. Khi tôi tập trung vào trường nhập, trường nhập dưới đây sẽ di chuyển xuống một chút. Tôi đã thử thêm chiều cao cho li nhưng điều đó không hiệu quả.Khi tập trung vào trường nhập có đường viền 3px, tất cả các trường nhập khác tiếp tục di chuyển

/* CSS 


    input[type="text"], 
    input[type="password"] { 

    border: 1px solid #CCCCCC; 
    box-shadow: 0 -1px 3px rgba(0, 0, 0, 0.2); 
    min-height: 22px; 
padding: 3px; 

    } 

.checkout input:focus { 
border:3px solid #6b991c; 
padding:2px; 
} 

*/ 

<ul class="clearFix"> 
        <li>      
         <label for="title" class="checkoutLabel">Title <strong class="requiredInfo">*</strong></label> 
         <select name="title" id="title" class="required"> 
         <option selected="selected">Please select</option> 
         <option value="Mr">Mr</option> 
         <option value="Mrs">Mrs</option> 
         <option value="Miss">Miss</option> 
         <option value="Dr">Dr</option> 
         </select> 
        </li> 
        <li class="active"> 
         <label class="checkoutLabel" for="firstName">First name <strong class="requiredInfo">*</strong></label> 
         <div class="checkoutInputLarge"> 
         <input type="text" name="firstName" id="firstName" class="required" /> 
         </div> 
        </li> 
        <li> 
         <label for="lastName" class="checkoutLabel">Last name <strong class="requiredInfo">*</strong> </label> 
         <div class="checkoutInputLarge active"> 
          <input type="text" name="lastName" id="lastName" class="checkoutInput1 required" /> 
         </div> 
        </li> 

        <li> 
         <label for="email" class="checkoutLabel">Email <strong class="requiredInfo">*</strong></label> 
         <div class="checkoutInputLarge"> 
          <input type="text" name="email" id="email" class="required" /> 
         </div> 
        </li> 
        <li> 
         <label for="phoneNumber" class="checkoutLabel">Phone number <strong class="requiredInfo">*</strong></label> 
         <div class="checkoutInputLarge"> 
          <input type="text" name="phoneNumber" id="phoneNumber" class="checkoutInput1 required" /> 
         </div> 
        </li> 
        <li> 
         <input type="checkbox" name="smsAlert" id="smsAlert" /><label for="smsAlert" class="smsAlertLabel">I wish to receive SMS alerts on my order status</label> 
        </li> 
        <li> 
         <label class="checkoutLabel">Are you a <br /> business customer? <strong class="requiredInfo">*</strong></label> 
         <input type="radio" name="businessCustomer" id="businessCustYes" value="yes" class="radio required" /><label class="businessCustomerLabels" for="businessCustYes">Yes</label> 
         <input type="radio" name="businessCustomer" id="businessCustNo" value="no" class="radio required" checked="checked" /><label class="businessCustomerLabels" for="businessCustNo">No</label> 
        </li> 
        </ul> 

Trả lời

3

Có đường viền mà trước đó bạn chưa có (hoặc tăng border-width) sẽ làm cho phần tử lớn hơn một cách hiệu quả, do đó có khả năng khiến các yếu tố khác di chuyển. Để tránh điều này, bạn nên cố gắng đảm bảo tổng kích thước (chiều cao hoặc chiều rộng + padding + border + margin) là như nhau. Trong trường hợp của bạn, tôi nghĩ bạn nên thử thêm một lề 2px vào phong cách không tập trung để bù đắp (vì đường viền của phần tử tập trung lớn hơn 2px). Hãy thử:

input[type="text"], 
    input[type="password"] { 
     border: 1px solid #CCCCCC; 
     box-shadow: 0 -1px 3px rgba(0, 0, 0, 0.2); 
     min-height: 22px; 
     padding: 3px; 
     margin: 2px; 
    } 

.checkout input:focus { 
    border:3px solid #6b991c; 
    padding:2px; 
    margin: 0; 
} 
0

Có, vì không gian ngang chiếm lĩnh trường nhập tăng 6 pixel khi lấy nét, vì đường viền chỉ được áp dụng trong khi lấy nét và 3px ở mỗi bên. Thay vào đó, hãy đặt đường viền để tồn tại mọi lúc và thay đổi thuộc tính màu đường viền trong khi lấy tiêu điểm.

4

Hãy thử điều này:

.checkout input:focus { 
    margin-right: 50px; 
    padding: 2px; 
    margin: -1px; 
} 

Bởi vì bạn đã thêm 3px trên biên giới và một đệm của 2px về tình trạng không tập trung, bạn sẽ phải làm một số toán học sang trạng thái tập trung để làm cho nó bằng với khi nó không tập trung. Trong trường hợp của bạn, làm -1px trên lề trên trạng thái tập trung nên hủy bỏ nhảy.

Các vấn đề liên quan