二级分类JS实现,伸缩重叠效果

2011061316034021.jpg二级分类JS实现,伸缩重叠效果,效果图展示如下:
以下代码如下:
<script   type="text/javascript">
var mh = 30;//最小高度
var step = 10;//每次变化的px量
var ms = 10;//每隔多久循环一次
function   toggle(o,n){
var max  = n;//最大高度
    if   (!o.tid)o.tid   =   "_"   +   Math.random()   *   100;      
    if   (!window.toggler)window.toggler   =   {};      
    if   (!window.toggler[o.tid]){      
        window.toggler[o.tid]={
            obj:o,      
            maxHeight:n,
            minHeight:mh,      
            timer:null,      
            action:-1
        };
    }     
    o.style.height   =   o.offsetHeight   +   "px";      
    if   (window.toggler[o.tid].timer)clearTimeout(window.toggler[o.tid].timer);      
    window.toggler[o.tid].action   *=   -1;      
    window.toggler[o.tid].timer   =   setTimeout("anim('"+o.tid+"')",ms   );      
}      
function   anim(id){      
    var   t   =   window.toggler[id];      
    var   o   =   window.toggler[id].obj;      
    if   (t.action   <   0){      
        if   (o.offsetHeight<=t.minHeight){      
            clearTimeout(t.timer);      
            return;      
        }      
    }
    else{      
        if(o.offsetHeight>=t.maxHeight){      
            clearTimeout(t.timer);      
            return;      
        }      
    }
    o.style.height   =   (parseInt(o.style.height,   10)   +   t.action   *   step)   +   "px";      
    window.toggler[id].timer   =   setTimeout("anim('"+id+"')",ms   );      
}      
</script>
<style   type="text/css">
.xx{border:solid 1px;overflow:hidden;height:30px;}      
.xx h5{padding:2;margin:0;height:30px;background:#f2f2f2;cursor:pointer;}      
</style>
<div class="xx"><h5 οnclick="toggle(this.parentNode,150)//最大高度手工定义">分类1</h5>
分类01<br>分类02<br>03<br>4<br>5<br>6<br>7<br>8<br>9<br>0
</div>
<div class="xx"><h5 οnclick="toggle(this.parentNode,200)">分类2</h5>
1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>0
</div>
<div class="xx"><h5 οnclick="toggle(this.parentNode,100)">分类3</h5>
1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>0
</div>

转载于:https://www.cnblogs.com/sheevy/archive/2011/06/13/2079809.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
QToolButton 的动态伸缩效果可以通过设置其大小策略和大小限制来实现。 具体步骤如下: 1. 设置 QToolButton 的大小策略为 Preferred,这样可以让 QToolButton 自动根据其内容大小调整大小。 ``` toolButton.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) ``` 2. 设置 QToolButton 的最小尺寸和最大尺寸,这样可以限制 QToolButton 的大小范围。 ``` toolButton.setMinimumSize(QSize(0, 0)) toolButton.setMaximumSize(QSize(16777215, 16777215)) ``` 3. 将 QToolButton 放入一个布局管理器中,例如 QVBoxLayout。 4. 当需要展开或收起 QToolButton 时,通过设置布局管理器的大小来实现 QToolButton 的动态伸缩效果。 例如,当需要展开 QToolButton 时,可以将 QVBoxLayout 的最小尺寸设置为 QToolButton 的内容大小,当需要收起 QToolButton 时,可以将 QVBoxLayout 的最小尺寸设置为 QSize(0, 0)。 完整代码示例如下: ```python from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QToolButton, QTextEdit, QPushButton, QHBoxLayout, QMainWindow, QLabel from PyQt5.QtCore import QSize class MainWindow(QMainWindow): def __init__(self): super().__init__() # 创建一个主窗口 widget = QWidget() self.setCentralWidget(widget) # 创建一个垂直布局 layout = QVBoxLayout() widget.setLayout(layout) # 创建一个 QToolButton toolButton = QToolButton() toolButton.setText("Click me") toolButton.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) toolButton.setMinimumSize(QSize(0, 0)) toolButton.setMaximumSize(QSize(16777215, 16777215)) # 创建一个文本框 textEdit = QTextEdit() # 创建一个按钮,用于展开和收起 QToolButton button = QPushButton("Expand") # 创建一个水平布局,将按钮和 QToolButton 放在一起 hbox = QHBoxLayout() hbox.addWidget(button) hbox.addWidget(toolButton) # 将水平布局和文本框放入垂直布局中 layout.addLayout(hbox) layout.addWidget(textEdit) # 为按钮添加点击事件,用于展开和收起 QToolButton button.clicked.connect(lambda: self.expand(toolButton, hbox)) def expand(self, toolButton, hbox): if hbox.minimumSize() == QSize(0, 0): hbox.setMinimumSize(QSize(toolButton.sizeHint().width(), toolButton.sizeHint().height())) else: hbox.setMinimumSize(QSize(0, 0)) if __name__ == "__main__": app = QApplication([]) mainWindow = MainWindow() mainWindow.show() app.exec_() ``` 运行以上代码,点击 "Expand" 按钮即可展开和收起 QToolButton,并且 QToolButton 会动态伸缩

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值