product中为什么删除.product中的绝对定位会报错,另溢出隐藏是否可以不要

product中为什么删除.product中的绝对定位会报错,另溢出隐藏是否可以不要

<template>
  <transition name="product">
    <div class="product">
      <header class="g-header-container">
        <product-header></product-header>
      </header>  
    </div>
  </transition>
</template>

<script>
import {getProductDetail} from 'api/product';
import ProductHeader from './header';

export default {
  name: 'Product',
  components:{
    ProductHeader
  },
  data(){
    return {
      products:{}
    };
  },
  created(){
    getProductDetail(this.$route.params.id).then(data => {
      console.log(data.data.item);
      this.products=data.data.item;
    });
  }
};
</script>

<style lang="scss" scoped>
@import "~assets/scss/mixins";
.product {
  overflow: hidden;
  position: absolute;
  top: 0;
  left: 0;
  z-index: $product-z-index;
  width: 100%;
  height: 100%;
  background-color: $bgc-theme;
}
.product-enter-active,
.product-leave-active {    
    transition: all 0.3s;
}

.product-enter,
.product-leave-to {
  transform: translate3d(100%, 0, 0);
}
.product-enter-to{
  transform: translate3d(0, 0, 0);
}
</style>


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
好帮手慕星星 2020-04-13 18:01:45

同学你好,问题解答如下:

1、search页面使用定位的原因是遮盖住底部,底部用了定位,脱离文档流。search页面如果不用定位,下面就会被底部遮盖住一部分

http://img1.sycdn.imooc.com//climg/5e94383009d5923719021122.jpg

并且底部也是不需要的,所以设置了定位进行覆盖。

2、路由做的并不是跳转,而是把指定路由里面的内容添加到router-view中,可以看一下浏览器中解析

http://img1.sycdn.imooc.com//climg/5e943798094a9ad500000000.jpg

http://img1.sycdn.imooc.com//climg/5e9437ca09233faa09180474.jpg

在home中子元素中,所以需要定位覆盖在最上面。

自己再测试理解下,祝学习愉快!

好帮手慕星星 2020-04-13 13:53:54

同学你好,product页面是home页面的一部分

http://img1.sycdn.imooc.com//climg/5e93fd4f0913ba8516870675.jpg

所以子元素如果想要完全显示在所有元素最上面,就需要设置定位,脱离文档流,然后设置层级属性。

例如:

http://img1.sycdn.imooc.com//climg/5e93fe4d095c4ac708531026.jpg

p子元素覆盖在最上面

http://img1.sycdn.imooc.com//climg/5e93fe6409639d9110910471.jpg

自己可以再测试理解下,祝学习愉快!

  • 提问者 迷失的小麦 #1
    那search和home等4个页面是同一个级别的,为啥也要绝对定位
    2020-04-13 13:57:25
  • 提问者 迷失的小麦 #2
    home中的<router-view></router-view>打开的是二级路由,按理说打开之后跟一级路由home本身就没有关系了,既然没有关系为啥还要绝对定位
    2020-04-13 14:15:20
好帮手慕星星 2020-04-13 11:18:56

同学你好,问题解答如下:

1、去掉.product元素中设置的绝对定位是不会报错的,只不过看不到页面在上层显示而已。因为product是home中的子页面,所以需要设置绝对定位,通过层级属性定位在上面

2、overflow:hidden;超出隐藏属性没有作用的话是可以去掉的

祝学习愉快!

  • 提问者 迷失的小麦 #1
    不太理解“因为product是home中的子页面,所以需要设置绝对定位”这句话,能不能具体解释下。难道路由和css有关系?
    2020-04-13 11:54:01
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师