Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
們時(shí)常會(huì)遇到這樣的問題,文字太長(zhǎng)致使頁面被拉的太長(zhǎng),加載起來很困難,而且用戶沒有耐心來看這么長(zhǎng)篇幅的內(nèi)容,看到就煩躁而調(diào)走,這時(shí)候我們就需要一個(gè)可以把文字隱藏一部分的功能,然后通過一個(gè)點(diǎn)擊來展開或者引導(dǎo)登錄或者關(guān)注后在展開。
如此我們可以得到注冊(cè)量和關(guān)注量,從而達(dá)到我們想要的效果!具體作用就不再這里做詳細(xì)分析了,相信大家已經(jīng)知道他們的用途了!下面來看下效果吧!
收起后效果:
收起效果
點(diǎn)擊“查看全文”后的效果
展開效果
源碼也共享給大家,可以自行復(fù)制,這次沒有單獨(dú)的js,可以直接復(fù)制使用哦
<html>
<head>
<title>文字的折疊和展開效果</title>
</head>
<body>
<div>
<table border="0" width="300" cellpadding="0" style="border-collapse: collapse" id="table1" bgcolor="#F3F3F3" cellspacing="10">
<tr>
<td valign="top" style="line-height: 150%"><div id="smallContent" style="display:block">
<span style="font-size: 9pt"> <b>文字的折疊和展開效果:</b>我是折疊后的內(nèi)容,點(diǎn)擊展開后我會(huì)消失,只要把展開的開頭內(nèi)容設(shè)置和我一樣了就可以了...[<a href="javascript:" onclick="document.all.fullContent.style.display=(document.all.fullContent.style.display=='none')?'':'none';document.all.smallContent.style.display=(document.all.smallContent.style.display=='none')?'':'none'" >查看全文</a>]</span></div>
<div id="fullContent" style="display:none;">
<span style="font-size: 9pt">
<b>文字的折疊和展開效果:</b>我是展開后的內(nèi)容,收起后我會(huì)消失,我是展開后的內(nèi)容,收起后我會(huì)消失,我是展開后的內(nèi)容,收起后我會(huì)消失,我是展開后的內(nèi)容,收起后我會(huì)消失,我是展開后的內(nèi)容,收起后我會(huì)消失,我是展開后的內(nèi)容,收起后我會(huì)消失,我是展開后的內(nèi)容,收起后我會(huì)消失,我是展開后的內(nèi)容,收起后我會(huì)消失,我是展開后的內(nèi)容,收起后我會(huì)消失,我是展開后的內(nèi)容,收起后我會(huì)消失,我是展開后的內(nèi)容,收起后我會(huì)消失,我是展開后的內(nèi)容,收起后我會(huì)消失,我是展開后的內(nèi)容,收起后我會(huì)消失,我是展開后的內(nèi)容,收起后我會(huì)消失,我是展開后的內(nèi)容,收起后我會(huì)消失,我是展開后的內(nèi)容,收起后我會(huì)消失,我是展開后的內(nèi)容,收起后我會(huì)消失,我是展開后的內(nèi)容,收起后我會(huì)消失,我是展開后的內(nèi)容,收起后我會(huì)消失,我是展開后的內(nèi)容,收起后我會(huì)消失,我是展開后的內(nèi)容,收起后我會(huì)消失,我是展開后的內(nèi)容,收起后我會(huì)消失,我是展開后的內(nèi)容,收起后我會(huì)消失,
[<a href="javascript:" onclick="document.all.fullContent.style.display=(document.all.fullContent.style.display=='none')?'':'none';document.all.smallContent.style.display=(document.all.smallContent.style.display=='none')?'':'none'" >收起</a>]</span></div></td>
</tr>
</table>
</div>
</body>
</html>
喜歡我們?yōu)槟窒淼膬?nèi)容的話,就關(guān)注我們吧,還有更多精彩哦,
文章由vv:java-hadoop整理發(fā)布,轉(zhuǎn)載請(qǐng)注明出處
一個(gè)有限的空間內(nèi)顯示用于呈現(xiàn)信息的可折疊的內(nèi)容面板。
如需了解更多有關(guān) accordion 部件的細(xì)節(jié),請(qǐng)查看 API 文檔 折疊面板部件(Accordion Widget)。
默認(rèn)功能
點(diǎn)擊頭部展開/折疊被分為各個(gè)邏輯部分的內(nèi)容,就像標(biāo)簽頁(tabs)一樣。您可以選擇性地設(shè)置當(dāng)鼠標(biāo)懸停時(shí)是否切換各部分的打開/關(guān)閉狀態(tài)。
基本的 HTML 標(biāo)記是一系列的標(biāo)題(H3 標(biāo)簽)和內(nèi)容 div,因此內(nèi)容不用通過 JavaScript 即可用。
<!doctype html> <html> <head> <meta charset="utf-8"> <title>jQuery UI 折疊面板(Accordion) - 默認(rèn)功能</title> <link rel="stylesheet" > <script src="http://code.jquery.com/jquery-1.9.1.js"></script> <script src="http://code.jquery.com/ui/1.10.4/jquery-ui.js"></script> <link rel="stylesheet" > <script> $(function() { $( "#accordion" ).accordion(); }); </script> </head> <body> <div id="accordion"> <h3>部分 1</h3> <div> <p> Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate. </p> </div> <h3>部分 2</h3> <div> <p> Sed non urna. Donec et ante. Phasellus eu ligula. Vestibulum sit amet purus. Vivamus hendrerit, dolor at aliquet laoreet, mauris turpis porttitor velit, faucibus interdum tellus libero ac justo. Vivamus non quam. In suscipit faucibus urna. </p> </div> <h3>部分 3</h3> <div> <p> Nam enim risus, molestie et, porta ac, aliquam ac, risus. Quisque lobortis. Phasellus pellentesque purus in massa. Aenean in pede. Phasellus ac libero ac tellus pellentesque semper. Sed ac felis. Sed commodo, magna quis lacinia ornare, quam ante aliquam nisi, eu iaculis leo purus venenatis dui. </p> <ul> <li>List item one</li> <li>List item two</li> <li>List item three</li> </ul> </div> <h3>部分 4</h3> <div> <p> Cras dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aenean lacinia mauris vel est. </p> <p> Suspendisse eu nisl. Nullam ut libero. Integer dignissim consequat lectus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. </p> </div> </div> </body> </html>
折疊內(nèi)容
默認(rèn)情況下,折疊面板總是保持一個(gè)部分是打開的。為了讓所有部分都是折疊的,可設(shè)置 collapsible
選項(xiàng)為 true。點(diǎn)擊當(dāng)前打開的部分,來折疊它的內(nèi)容面板。
<!doctype html> <html> <head> <meta charset="utf-8"> <title>jQuery UI 折疊面板(Accordion) - 折疊內(nèi)容</title> <link rel="stylesheet" > <script src="http://code.jquery.com/jquery-1.9.1.js"></script> <script src="http://code.jquery.com/ui/1.10.4/jquery-ui.js"></script> <link rel="stylesheet" > <script> $(function() { $( "#accordion" ).accordion({ collapsible: true }); }); </script> </head> <body> <div id="accordion"> <h3>部分 1</h3> <div> <p>Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate.</p> </div> <h3>部分 2</h3> <div> <p>Sed non urna. Donec et ante. Phasellus eu ligula. Vestibulum sit amet purus. Vivamus hendrerit, dolor at aliquet laoreet, mauris turpis porttitor velit, faucibus interdum tellus libero ac justo. Vivamus non quam. In suscipit faucibus urna. </p> </div> <h3>部分 3</h3> <div> <p>Nam enim risus, molestie et, porta ac, aliquam ac, risus. Quisque lobortis. Phasellus pellentesque purus in massa. Aenean in pede. Phasellus ac libero ac tellus pellentesque semper. Sed ac felis. Sed commodo, magna quis lacinia ornare, quam ante aliquam nisi, eu iaculis leo purus venenatis dui. </p> <ul> <li>List item one</li> <li>List item two</li> <li>List item three</li> </ul> </div> <h3>部分 4</h3> <div> <p>Cras dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aenean lacinia mauris vel est. </p><p>Suspendisse eu nisl. Nullam ut libero. Integer dignissim consequat lectus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. </p> </div> </div> </body> </html>
查看演示
自定義圖標(biāo)
通過 icons
選項(xiàng)自定義標(biāo)題圖標(biāo),icons
選項(xiàng)接受標(biāo)題默認(rèn)的和激活的(打開的)狀態(tài)的 class。使用 UI CSS 框架中的任意 class,或者使用背景圖像創(chuàng)建自定義的 class。
<!doctype html> <html> <head> <meta charset="utf-8"> <title>jQuery UI 折疊面板(Accordion) - 自定義圖標(biāo)</title> <link rel="stylesheet" > <script src="http://code.jquery.com/jquery-1.9.1.js"></script> <script src="http://code.jquery.com/ui/1.10.4/jquery-ui.js"></script> <link rel="stylesheet" > <script> $(function() { var icons={ header: "ui-icon-circle-arrow-e", activeHeader: "ui-icon-circle-arrow-s" }; $( "#accordion" ).accordion({ icons: icons }); $( "#toggle" ).button().click(function() { if ( $( "#accordion" ).accordion( "option", "icons" ) ) { $( "#accordion" ).accordion( "option", "icons", null ); } else { $( "#accordion" ).accordion( "option", "icons", icons ); } }); }); </script> </head> <body> <div id="accordion"> <h3>部分 1</h3> <div> <p>Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate.</p> </div> <h3>部分 2</h3> <div> <p>Sed non urna. Donec et ante. Phasellus eu ligula. Vestibulum sit amet purus. Vivamus hendrerit, dolor at aliquet laoreet, mauris turpis porttitor velit, faucibus interdum tellus libero ac justo. Vivamus non quam. In suscipit faucibus urna. </p> </div> <h3>部分 3</h3> <div> <p>Nam enim risus, molestie et, porta ac, aliquam ac, risus. Quisque lobortis. Phasellus pellentesque purus in massa. Aenean in pede. Phasellus ac libero ac tellus pellentesque semper. Sed ac felis. Sed commodo, magna quis lacinia ornare, quam ante aliquam nisi, eu iaculis leo purus venenatis dui. </p> <ul> <li>List item one</li> <li>List item two</li> <li>List item three</li> </ul> </div> <h3>部分 4</h3> <div> <p>Cras dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aenean lacinia mauris vel est. </p><p>Suspendisse eu nisl. Nullam ut libero. Integer dignissim consequat lectus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. </p> </div> </div> <button id="toggle">切換圖標(biāo)</button> </body> </html>
查看演示
填充空間
由于折疊面板是由塊級(jí)元素組成的,默認(rèn)情況下它的寬度會(huì)填充可用的水平空間。為了填充由容器分配的垂直空間,設(shè)置 heightStyle
選項(xiàng)為 "fill"
,腳本會(huì)自動(dòng)設(shè)置折疊面板的尺寸為父容器的高度。
<!doctype html> <html> <head> <meta charset="utf-8"> <title>jQuery UI 折疊面板(Accordion) - 填充空間</title> <link rel="stylesheet" > <script src="http://code.jquery.com/jquery-1.9.1.js"></script> <script src="http://code.jquery.com/ui/1.10.4/jquery-ui.js"></script> <link rel="stylesheet" > <style> #accordion-resizer { padding: 10px; width: 350px; height: 220px; } </style> <script> $(function() { $( "#accordion" ).accordion({ heightStyle: "fill" }); }); $(function() { $( "#accordion-resizer" ).resizable({ minHeight: 140, minWidth: 200, resize: function() { $( "#accordion" ).accordion( "refresh" ); } }); }); </script> </head> <body> <h3>重新調(diào)整外部容器:</h3> <div id="accordion-resizer"> <div id="accordion"> <h3>部分 1</h3> <div> <p>Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate.</p> </div> <h3>部分 2</h3> <div> <p>Sed non urna. Donec et ante. Phasellus eu ligula. Vestibulum sit amet purus. Vivamus hendrerit, dolor at aliquet laoreet, mauris turpis porttitor velit, faucibus interdum tellus libero ac justo. Vivamus non quam. In suscipit faucibus urna. </p> </div> <h3>部分 3</h3> <div> <p>Nam enim risus, molestie et, porta ac, aliquam ac, risus. Quisque lobortis. Phasellus pellentesque purus in massa. Aenean in pede. Phasellus ac libero ac tellus pellentesque semper. Sed ac felis. Sed commodo, magna quis lacinia ornare, quam ante aliquam nisi, eu iaculis leo purus venenatis dui. </p> <ul> <li>List item one</li> <li>List item two</li> <li>List item three</li> </ul> </div> <h3>部分 4</h3> <div> <p>Cras dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aenean lacinia mauris vel est. </p><p>Suspendisse eu nisl. Nullam ut libero. Integer dignissim consequat lectus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. </p> </div> </div> </div> </body> </html>
非自動(dòng)高度
設(shè)置 heightStyle: "content"
,讓折疊面板保持它們初始的高度。
<!doctype html> <html> <head> <meta charset="utf-8"> <title>jQuery UI 折疊面板(Accordion) - 非自動(dòng)高度</title> <link rel="stylesheet" > <script src="http://code.jquery.com/jquery-1.9.1.js"></script> <script src="http://code.jquery.com/ui/1.10.4/jquery-ui.js"></script> <link rel="stylesheet" > <script> $(function() { $( "#accordion" ).accordion({ heightStyle: "content" }); }); </script> </head> <body> <div id="accordion"> <h3>部分 1</h3> <div> <p>Mauris mauris ante, blandit et, ultrices a, susceros. Nam mi. Proin viverra leo ut odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate.</p> </div> <h3>部分 2</h3> <div> <p>Sed non urna. Donec et ante. Phasellus eu ligula. Vestibulum sit amet purus. Vivamus hendrerit, dolor at aliquet laoreet, mauris turpis porttitor velit, faucibus interdum tellus libero ac justo. Vivamus non quam. In suscipit faucibus urna. </p> </div> <h3>部分 3</h3> <div> <p>Nam enim risus, molestie et, porta ac, aliquam ac, risus. Quisque lobortis. Phasellus pellentesque purus in massa. Aenean in pede. Phasellus ac libero ac tellus pellentesque semper. Sed ac felis. Sed commodo, magna quis lacinia ornare, quam ante aliquam nisi, eu iaculis leo purus venenatis dui. </p> <ul> <li>List item</li> <li>List item</li> <li>List item</li> <li>List item</li> <li>List item</li> <li>List item</li> <li>List item</li> </ul> </div> </div> </body> </html>
查看演示
當(dāng)懸停時(shí)打開
點(diǎn)擊頭部展開/折疊被分為各個(gè)邏輯部分的內(nèi)容,就像標(biāo)簽頁(tabs)一樣。您可以選擇性地設(shè)置當(dāng)鼠標(biāo)懸停時(shí)是否切換各部分的打開/關(guān)閉狀態(tài)。
基本的 HTML 標(biāo)記是一系列的標(biāo)題(H3 標(biāo)簽)和內(nèi)容 div,因此內(nèi)容不用通過 JavaScript 即可用。
<!doctype html> <html> <head> <meta charset="utf-8"> <title>jQuery UI 折疊面板(Accordion) - 當(dāng)懸停時(shí)打開</title> <link rel="stylesheet" > <script src="http://code.jquery.com/jquery-1.9.1.js"></script> <script src="http://code.jquery.com/ui/1.10.4/jquery-ui.js"></script> <link rel="stylesheet" > <script> $(function() { $( "#accordion" ).accordion({ event: "click hoverintent" }); }); /* * hoverIntent | Copyright 2011 Brian Cherne * http://cherne.net/brian/resources/jquery.hoverIntent.html * modified by the jQuery UI team */ $.event.special.hoverintent={ setup: function() { $( this ).bind( "mouseover", jQuery.event.special.hoverintent.handler ); }, teardown: function() { $( this ).unbind( "mouseover", jQuery.event.special.hoverintent.handler ); }, handler: function( event ) { var currentX, currentY, timeout, args=arguments, target=$( event.target ), previousX=event.pageX, previousY=event.pageY; function track( event ) { currentX=event.pageX; currentY=event.pageY; }; function clear() { target .unbind( "mousemove", track ) .unbind( "mouseout", clear ); clearTimeout( timeout ); } function handler() { var prop, orig=event; if ( ( Math.abs( previousX - currentX ) + Math.abs( previousY - currentY ) ) < 7 ) { clear(); event=$.Event( "hoverintent" ); for ( prop in orig ) { if ( !( prop in event ) ) { event[ prop ]=orig[ prop ]; } } // 防止訪問原始事件,因?yàn)樾率录?huì)被異步觸發(fā),舊事件不再可用 (#6028) delete event.originalEvent; target.trigger( event ); } else { previousX=currentX; previousY=currentY; timeout=setTimeout( handler, 100 ); } } timeout=setTimeout( handler, 100 ); target.bind({ mousemove: track, mouseout: clear }); } }; </script> </head> <body> <div id="accordion"> <h3>部分 1</h3> <div> <p> Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate. </p> </div> <h3>部分 2</h3> <div> <p> Sed non urna. Donec et ante. Phasellus eu ligula. Vestibulum sit amet purus. Vivamus hendrerit, dolor at aliquet laoreet, mauris turpis porttitor velit, faucibus interdum tellus libero ac justo. Vivamus non quam. In suscipit faucibus urna. </p> </div> <h3>部分 3</h3> <div> <p> Nam enim risus, molestie et, porta ac, aliquam ac, risus. Quisque lobortis. Phasellus pellentesque purus in massa. Aenean in pede. Phasellus ac libero ac tellus pellentesque semper. Sed ac felis. Sed commodo, magna quis lacinia ornare, quam ante aliquam nisi, eu iaculis leo purus venenatis dui. </p> <ul> <li>List item one</li> <li>List item two</li> <li>List item three</li> </ul> </div> <h3>部分 4</h3> <div> <p> Cras dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aenean lacinia mauris vel est. </p> <p> Suspendisse eu nisl. Nullam ut libero. Integer dignissim consequat lectus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. </p> </div> </div> </body> </html>
查看演示
排序(Sortable)
拖拽標(biāo)題來給面板重新排序。
<!doctype html> <html> <head> <meta charset="utf-8"> <title>jQuery UI 折疊面板(Accordion) - 排序(Sortable)</title> <link rel="stylesheet" > <script src="http://code.jquery.com/jquery-1.9.1.js"></script> <script src="http://code.jquery.com/ui/1.10.4/jquery-ui.js"></script> <link rel="stylesheet" > <style> /* 當(dāng)排序時(shí),IE 存在布局問題(查看 #5413) */ .group { zoom: 1 } </style> <script> $(function() { $( "#accordion" ) .accordion({ header: "> div > h3" }) .sortable({ axis: "y", handle: "h3", stop: function( event, ui ) { // 當(dāng)排序時(shí),IE 不能注冊(cè) blur,所以觸發(fā) focusout 處理程序來移除 .ui-state-focus ui.item.children( "h3" ).triggerHandler( "focusout" ); } }); }); </script> </head> <body> <div id="accordion"> <div> <h3>部分 1</h3> <div> <p>Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate.</p> </div> </div> <div> <h3>部分 2</h3> <div> <p>Sed non urna. Donec et ante. Phasellus eu ligula. Vestibulum sit amet purus. Vivamus hendrerit, dolor at aliquet laoreet, mauris turpis porttitor velit, faucibus interdum tellus libero ac justo. Vivamus non quam. In suscipit faucibus urna. </p> </div> </div> <div> <h3>部分 3</h3> <div> <p>Nam enim risus, molestie et, porta ac, aliquam ac, risus. Quisque lobortis. Phasellus pellentesque purus in massa. Aenean in pede. Phasellus ac libero ac tellus pellentesque semper. Sed ac felis. Sed commodo, magna quis lacinia ornare, quam ante aliquam nisi, eu iaculis leo purus venenatis dui. </p> <ul> <li>List item one</li> <li>List item two</li> <li>List item three</li> </ul> </div> </div> <div> <h3>部分 4</h3> <div> <p>Cras dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aenean lacinia mauris vel est. </p><p>Suspendisse eu nisl. Nullam ut libero. Integer dignissim consequat lectus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. </p> </div> </div> </div> </body> </html>
我們使用CSS來對(duì)一個(gè)高度未定的元素添加折疊動(dòng)畫時(shí),會(huì)遇到使用transition來對(duì)Height從0到auto添加過度動(dòng)畫,動(dòng)畫并沒有生效的問題;
幸運(yùn)的是,現(xiàn)在有了解決方案: 使用表格布局,實(shí)現(xiàn)簡(jiǎn)單并且效果完美;
通常以前對(duì)于這種場(chǎng)景,使用CSS來實(shí)現(xiàn):使用max-height 或者 scaleY 貌似能夠解決;但是會(huì)有不同程度的問題:
折疊時(shí)設(shè)置max-height為零,展開時(shí)設(shè)置max-height為一個(gè)較大的值;
弊端: 因?yàn)樾枰M可能保證max-height大于折疊內(nèi)容的寬度,需要將max-height設(shè)置的比較大,導(dǎo)致展開時(shí)動(dòng)畫速度變慢,并且折疊時(shí)有短暫的停頓;
通過scaleY 0 - 1的過渡實(shí)現(xiàn),但是動(dòng)畫過程中可見內(nèi)容被擠壓變形,體驗(yàn)不好;
現(xiàn)在如果用網(wǎng)格布局來實(shí)現(xiàn),讓我們來試下:
html結(jié)構(gòu):
html復(fù)制代碼<div class="accordion">
<div class="accordion-title">Hover me!</div>
<div class="accordion-body">
<div>
<p>Lorem ipsum ...</p>
</div>
</div>
</div>
css復(fù)制代碼.accordion-body {
display: grid;
grid-template-rows: 0fr;
transition: 250ms grid-template-rows ease;
}
.accordion:hover .accordion-body {
grid-template-rows: 1fr;
}
.accordion-body > div {
overflow: hidden;
}
效果:
原文鏈接:
https://dev.to/francescovetere/css-trick-transition-from-height-0-to-auto-21de
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。