Fancybox ทำให้ขนาดเนื้อหาผิดเมื่อใช้ jQuery-Chosen?

ฉันมีป๊อปอัป Fancybox ที่ใช้ AJAX เพื่อดึงเนื้อหา

html ที่ดึงมาคือ div ซึ่งมีชื่อเรื่อง ตารางที่มีช่องป้อนข้อมูล และปุ่มบางปุ่ม

ปัญหาคือ ฉันได้รับแผ่นรองพิเศษหรือมีขนาดเล็กเกินไป อย่างไรก็ตาม ฉันมีแถบเลื่อนที่ไม่จำเป็น ฉันสามารถปิดการใช้งานได้อย่างสมบูรณ์โดยใช้คุณสมบัติ overflow ของ CSS หรือคุณสมบัติ scrolling ของ Fancybox แต่ฉันไม่ต้องการให้ปิดการใช้งานทั้งหมด - เพิ่มเมื่อจำเป็นเท่านั้น

ฉันกำลังใช้ jQuery Chosen Plugin ซึ่งเป็นสาเหตุที่ทำให้เกิดการโอเวอร์โฟลว์ ฉันจะหลีกเลี่ยงสิ่งนี้ได้อย่างไร

ไคลเอ็นต์จะแก้ไขเนื้อหา div เนื่องจากสามารถเพิ่ม/ลบแถวแบบไดนามิกได้ ดังนั้นฉันจึงต้องการให้แถบเลื่อนปรากฏขึ้นในกรณีที่ผู้ใช้เพิ่มแถวมากเกินไปเพื่อให้พอดีกับหน้าจอ นี่คือสิ่งที่เกิดขึ้น:

แถบเลื่อน

เกิดอะไรขึ้นกับเรื่องนี้? นี่คือ CSS ของฉันสำหรับสิ่งนี้:

#filter-form {
    width: 550px;
}
#filter-form h2 {
    text-align: center;
}
#filter-form .chzn-results {
    max-height: 110px;
}
#filter-form .buttons {
    margin-top: 10px;
    overflow: hidden;
}
#filter-form .buttons .btn_save_filter {
    float: right;
}
#assoc-num, #assoc-string {
    display: none;
}

#filter-form #CustomUserFilters_title {
    width: 350px;
    display: block;
    margin: 0 auto 30px;
}
#add-new-row td {
    text-align: right;
}
#add-new-row button {
    display: inline;
}
#filter-rules, #filter-form .buttons {
    width: 500px;
    margin: 0 auto;
}
#filter-rules td {
    width: 25% !important;
}

การตั้งค่าความกว้างไม่สำคัญ - การลบออกหรือเพิ่มทั้งสองอย่างยังคงเป็นสาเหตุ - ดังนั้นจึงไม่ใช่คุณสมบัติการปรับขนาดอัตโนมัติของ Fancybox ที่คิดว่าเนื้อหามีขนาดเล็กลง - มันจะปรับขนาดตามจำนวนที่ต้องการเสมอ ลบบางส่วน พิกเซลที่ทำให้เกิดการโอเวอร์โฟลว์

นี่คือ HTML (ฉันรู้ระเบียบใหญ่):

<div id="filter-div">
<form action="/customUserFilters/create" id="filter-form">
<h2>Create Filter</h2>
<input placeholder="Filter name" type="text" value="" name="CustomUserFilters[title]" id="CustomUserFilters_title"><table id="filter-rules">
    <tbody><tr class="filter-row">
<td class="td-bool-op"></td>
<td class="td-field-id"><select id="" style="width: 150px;" name="CustomUserFilterSettings[][field_id]">
<option value="2">Name</option>
</select></td>
<td class="td-assoc"><select style="width: 100px;" name="CustomUserFilterSettings[][assoc]">
<option value="=">=</option>
</select></td>
<td class="td-value"><input type="text" value="" name="CustomUserFilterSettings[][value]" id="CustomUserFilterSettings_value"></td></tr>    <tr id="new-filter">

<td class="td-bool-op"><select id="" style="width: 60px;" name="CustomUserFilterSettings[][bool_op]">
<option value="AND" selected="selected">AND</option>
<option value="OR">OR</option>
</select></td>
<td class="td-field-id"><select id="" style="width: 150px;" name="CustomUserFilterSettings[][field_id]">
<option value="2">Name</option>
</select></td>
<td class="td-assoc"><select style="width: 100px;" name="CustomUserFilterSettings[][assoc]">
<option value="=">=</option>
</select></td>
<td class="td-value"><input type="text" value="" name="CustomUserFilterSettings[][value]" id="CustomUserFilterSettings_value"></td>    </tr>
    <tr id="add-new-row">
        <td colspan="4">
            <button id="add-new-row-button" class="btn_grey" name="yt0" type="button">+ Add Another Condition</button>        </td>
    </tr>
</tbody></table>
<div class="buttons">
    <button class="btn_orange btn_save_filter" name="yt1" type="button">Create Filter</button>    <button class="btn_grey btn_cancel_filter" name="yt2" type="button">← Cancel</button></div>
</form>

And here's the Fancybox init:

$('#new_filter_button').fancybox({
    beforeLoad: function() {
        $('.qtip').hide();
    },
    type: 'ajax',
    href: window.baseUrl + '/customUserFilters/create',
    openEffect: 'fade',
    closeEffect: 'fade',
    wrapCSS: 'filters-box'
});

person casraf    schedule 26.08.2013    source แหล่งที่มา


คำตอบ (1)


ปรากฎว่า Fancybox ซ่อนเนื้อหาที่ล้นออกมา

เนื่องจากฉันใช้ jQuery Chosen Plugin แม้ว่ากล่องต่างๆ จะถูกปิด แต่คอนเทนเนอร์ของพวกเขายังคงอยู่ในหน้าเท่านั้นที่ถูกซ่อนไว้ ซึ่งทำให้ div สูงกว่าที่ควร แต่ด้วยเหตุผลบางอย่าง Fancybox ไม่ ไม่เพียงแต่ทำให้กล่องโต้ตอบใหญ่ขึ้น เนื่องจากเมนูแบบเลื่อนลงถูกซ่อนไว้ ด้วยเหตุผลบางประการที่ทำให้กล่องโต้ตอบไม่อยู่ในความสูง แม้ว่าจะยังคงใช้พื้นที่ในแนวตั้งก็ตาม จากนั้นแถบเลื่อนแนวนอนก็ดึงความกว้างจากกล่องโต้ตอบและทำให้ความกว้างล้น ซึ่งเป็นสาเหตุที่ทำให้เกิดแถบเลื่อนแนวตั้ง

สาปแช่ง! หวังว่าคำตอบนี้จะช่วยให้คนอื่นประสบปัญหานี้

person casraf    schedule 23.10.2013