同级、父子级div定位

以两个div右上角对齐为例:

效果图:

1.同级定位

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>同级</title>        
        <style type="text/css">
            body {
                margin: 0;
                padding: 0;
            }
            .main {
                position: relative; 
                width:1000px;
                height:600px;
                background: gray;
            }
            .div_01 {
                position: absolute;
                top: 0;                
                right: 0; 
                width: 600px;
                height: 400px;
                z-index: 1;
                background: yellow;
            }
            .div_02 {
                position: absolute;
                top: 0;                
                right: 0;
                width: 200px;
                height: 100px;
                z-index: 2;
                background: green;
                }
        </style>
    </head>
    <body>
        <div class="main">
            <div class="div_01">
                div_01
            </div>
            <div class="div_02">
                div_02
            </div>
        </div>    
    </body>
</html>

2.父子级定位

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>嵌套</title>
        <style type="text/css">
            body {
                margin: 0;
                padding: 0;
            }
            .div_01 {
                position: relative; 
                width:600px;
                height:400px;
                background: yellow;
            }
            .div_02 {
                position:absolute;
                top: 0;                
                right: 0;
                width:200px;
                height:100px;
                background: green;
                }
        </style>        
    </head>
    <body>
        <div class="div_01">
            <div class="div_02">
                div_02
            </div>
        </div>
    </body>
</html>

 

### Vue2 中父子组件首次不传递值的原因 在 Vue2 的父子组件间通讯过程中,如果遇到父组件向子组件首次渲染时不传递值的问题,通常是因为数据绑定机制中的异步更新行为所致。Vue 使用虚拟 DOM 来优化视图的重绘过程,在某些情况下这可能导致属性或事件处理器未能及时同步到子组件中。 具体来说,当父组件的数据发生变化时,Vue 并不会立即重新渲染整个应用;而是会在下一个“tick”周期内批量处理这些变更并更新相应的视图部分[^1]。因此,对于初次加载场景下可能出现的时间差问题,可以考虑调整初始化逻辑或是利用生命周期钩子函数来确保正确的顺序执行。 ### 解决方案 #### 方法一:使用 `v-if` 控制子组件显示时机 通过控制子组件何时被挂载至DOM树上,可以在确认所需数据已经准备好之后再实例化子组件: ```html <template> <div id="app"> <!-- 只有当 p2cReady 为 true 才会创建 m-child 组件 --> <m-child v-if="p2cReady" :msg="p2C"></m-child> </div> </template> <script> export default { data() { return { p2C: '来自父组件的消息', p2cReady: false, }; }, mounted() { // 模拟获取初始数据的过程 setTimeout(() => { this.p2cReady = true; }, 0); } }; </script> ``` 此方法适用于那些依赖于特定条件才能正常工作的子组件情况。 #### 方法二:延迟访问 `$refs` 有时开发者可能会尝试直接操作未完全初始化完成的子组件实例对象(即过早调用了 `$refs`)。为了避免这种情况发生,建议等待合适的时刻再去读取或修改子组件的状态: ```javascript this.$nextTick(() => { console.log(this.$refs.child); // 安全地获取 child 子组件引用 }); ``` 上述代码片段展示了如何借助 `$nextTick()` API 确保当前 DOM 更新完成后才继续下一步的操作。 #### 方法三:采用缓存策略应对 Tab 切换等问题 针对 tab 类型的应用场景,其中涉及多个同级子组件共用一套父参数的情形,可采取如下措施防止不必要的重复请求服务端压力: - **局部存储**:将必要的配置项保存起来供后续页面回访时快速恢复; - **记忆组件**:引入第三方库如 vue-lazyload 或者自定义指令实现懒加载效果; - **Vuex Store**:集中管理共享资源,减少冗余计算开销的同时也便于维护统一状态源[^3]。 综上所述,以上几种手段都可以有效缓解甚至彻底解决问题所在的不同方面需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值