缓动/过渡后窗格未调整大小
我有这些 HAML (A) 和 Sass (B) 文件(在后台使用 i.compass 和 ii.cecer-easing-0.2 )。
根据此示例,我想要对左窗格进行动画处理(水平扩展/收缩),并自动调整右窗格的大小。
我已经使用这些样式设置了我的父容器 { display: box; box-orient:水平; }。子 div 具有“box-flex”和缓动“过渡”。但右窗格没有调整大小。
我想知道我还必须在那里放什么?
谢谢
A)
%html{ :lang => "en" } %head %meta{ :charset => "utf-8" } %link{ :rel => "stylesheet", :href => "css/1140.css", :type => "text/css", :media => "screen" } %link{ :rel => "stylesheet", :href => "css/styles.css", :type => "text/css", :media => "screen" } %link{ :rel => "stylesheet", :href => "css/thing.css", :type => "text/css", :media => "screen" } %link{ :rel => "stylesheet", :href => "css/screen.css", :type => "text/css", :media => "screen, projection" } %link{ :rel => "stylesheet", :href => "css/print.css", :type => "text/css", :media => "print" } // [if IE] // // [endif] %script{ :type => "text/javascript", :src => "js/css3-mediaqueries.js" } %script{ :type => "text/javascript", :src => "js/jquery-1.6.3.js" } :javascript $(document).ready(function() { $(".left-col").click(function() { console.log("right-col clicked"); $(".left-col").toggleClass("closed"); }); }); %body .container .header Header .main-content .left-col.debug Left Panel .right-col.debug Right Panel .footer Footer
B)
@import "compass/layout" @import "compass/layout/stretching" @import "compass/css3/box" @import "ceaser-easing" $header-height : 50px $footer-height : 150px $left-col-width : 250px @include sticky-footer( $footer-height , "#container", "#left-col", "#footer") html, body min-height: 400px min-width: 800px height: 100% .header background: #999 height: $header-height box-shadow: 0 4px 6px #543 .footer background: #fdd clear: both z-index: 10 height: $footer-height .container padding: 0px width: 100% min-height: 100% margin: 0 auto -150px .main-content @include display-box @include box-orient(horizontal) .left-col width: $left-col-width @extend .stretched +stretch-y( $offset-top: $header-height, $offset-bottom: $footer-height ) @include box-flex(1) @include ceaser-transition(easeInOutExpo, width, 500ms, 0s) .left-col.closed width: 500px .right-col @extend .stretched @include box-flex(1) +stretch( $offset-top : $header-height, $offset-left : $left-col-width, $offset-bottom : $footer-height ) .debug border-style: solid border-width: 1px
I have these HAML (A) and Sass (B) files ( using i. compass and ii. ceaser-easing-0.2 in the background ).
As per this example, I want to animate ( horizontally expand / shrink ) the left pane, and have the right pane resize automatically.
I've set my parent container with these styles { display: box; box-orient: horizontal; } . And the child divs have 'box-flex' and easing 'transitions'. But the right pane isn't resizing.
I'm wondering what else I have to put in there?
Thanks
A)
%html{ :lang => "en" } %head %meta{ :charset => "utf-8" } %link{ :rel => "stylesheet", :href => "css/1140.css", :type => "text/css", :media => "screen" } %link{ :rel => "stylesheet", :href => "css/styles.css", :type => "text/css", :media => "screen" } %link{ :rel => "stylesheet", :href => "css/thing.css", :type => "text/css", :media => "screen" } %link{ :rel => "stylesheet", :href => "css/screen.css", :type => "text/css", :media => "screen, projection" } %link{ :rel => "stylesheet", :href => "css/print.css", :type => "text/css", :media => "print" } // [if IE] // // [endif] %script{ :type => "text/javascript", :src => "js/css3-mediaqueries.js" } %script{ :type => "text/javascript", :src => "js/jquery-1.6.3.js" } :javascript $(document).ready(function() { $(".left-col").click(function() { console.log("right-col clicked"); $(".left-col").toggleClass("closed"); }); }); %body .container .header Header .main-content .left-col.debug Left Panel .right-col.debug Right Panel .footer Footer
B)
@import "compass/layout" @import "compass/layout/stretching" @import "compass/css3/box" @import "ceaser-easing" $header-height : 50px $footer-height : 150px $left-col-width : 250px @include sticky-footer( $footer-height , "#container", "#left-col", "#footer") html, body min-height: 400px min-width: 800px height: 100% .header background: #999 height: $header-height box-shadow: 0 4px 6px #543 .footer background: #fdd clear: both z-index: 10 height: $footer-height .container padding: 0px width: 100% min-height: 100% margin: 0 auto -150px .main-content @include display-box @include box-orient(horizontal) .left-col width: $left-col-width @extend .stretched +stretch-y( $offset-top: $header-height, $offset-bottom: $footer-height ) @include box-flex(1) @include ceaser-transition(easeInOutExpo, width, 500ms, 0s) .left-col.closed width: 500px .right-col @extend .stretched @include box-flex(1) +stretch( $offset-top : $header-height, $offset-left : $left-col-width, $offset-bottom : $footer-height ) .debug border-style: solid border-width: 1px
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
看来您不应该对
box-flex
的子级应用position:absolute
,因为这会阻止它们在更改大小时相互“推动”。解决方法是在
.main-content
上应用position:absolute
并从那里定位:您可以在此处检查它的实际情况:
http://jsfiddle.net/yMjH6/
It seems that you shouldn't be applying
position: absolute
on children ofbox-flex
, as this prevents them from "pushing" each other when they change size.The workaround would be applying
position: absolute
on.main-content
instead and positioning from there:You can check it here in action:
http://jsfiddle.net/yMjH6/