文字溢出无效

文字溢出无效

希望实现效果:当价格数字过长时能够显示点点点,


遇到的问题

1、由于用的是flex布局,所以price盒子必须给一个宽度才会显示点点点,否则price盒子就会被内容撑开。但给了固定宽度后,就无法自适应(即屏幕变宽时price盒子能随之变宽),如何让price盒子既能够自适应,又能因文字过长显示点点点?

2、给了宽度后text盒子和price盒子就无法对齐,不知道为啥text盒子会掉下去,除非再在text盒子和price盒子的父级用flex布局才会对齐,这是为啥?

https://img1.sycdn.imooc.com//climg/64148f780980909c04230724.jpg





相关代码:

<template>
<div class="cart">
<div class="check">
<div class="check__icon">
<img
src="http://www.dell-lee.com/imgs/vue3/basket.png"
class="check__icon__img"
/>
<div class="check__icon__tag">2</div>
</div>
<div class="check__info">
<span class="check__info__text">总计</span>
<span class="check__info__price">&yen;1288888888888888888</span>
</div>
<div class="check__btn">去结算</div>
</div>
</div>
</template>

<script>
export default {
name: 'Cart'
}
</script>

<style lang="scss" scoped>
@import '../../style/mixins.scss';
.cart {
position: absolute;
left: 0;
right: 0;
bottom: 0;
}
.check {
display: flex;
height: .49rem;
border-top: .01rem solid #F1F1F1;
line-height: .49rem;
&__icon {
position: relative;
width: .84rem;
&__img {
display: block;
margin: .12rem auto;
width: .28rem;
height: .26rem;
}
&__tag {
position: absolute;
left: .5rem;
top: .04rem;
min-width: .2rem;
height: .2rem;
line-height: .2rem;
background-color:#E93B3B;
border-radius: .1rem;
font-size: .12rem;
text-align: center;
color: #fff;
transform: scale(.5);
transform-origin: left top;
}
}
&__info {
flex: 1;
color:#333;
font-size: .12rem;
&__price {
line-height: .49rem;
color: #E93B3B;
font-size: .18rem;
display: inline-block;
max-width: 1.4rem;
@include ellipsis;
}
// &__text{
//   display: inline-block;
//   width: .4rem;
// }
}
&__btn {
width: .98rem;
background-color: #4FB0F9;
text-align: center;
color: #FFF;
font-size: .14rem;
}
}
</style>

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

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

1回答
好帮手慕小李 2023-03-18 10:35:08

同学你好,可以不在父级上找解决办法,在包裹内容的标签上做处理如下:

https://img1.sycdn.imooc.com//climg/641521ec096d2c4505230080.jpg

首先我们将总计:用标签包裹起来。

https://img1.sycdn.imooc.com//climg/6415223309081b0410860351.jpg

然后给check__info__price做一下省略号处理。如下:

https://img1.sycdn.imooc.com//climg/641522b2093e71ad05190268.jpg

因为给了浮动,那么会造成总计与金额位置发生变化如下:

https://img1.sycdn.imooc.com//climg/641522d009d65f0805640095.jpg

那么这时候我们给总计:设置一下浮动即可如下:

https://img1.sycdn.imooc.com//climg/641522f609d4efc005830563.jpg

https://img1.sycdn.imooc.com//climg/6415231509b9a4f105040093.jpg

这样做的好处就是父级依然是flex的布局模式。

以上思路是不是更好一些,仅供参考。

祝学习愉快!

  • 提问者 慕粉1234567890123 #1

    1、之所以想尽量用flex解决,是因为ttl和price的宽度给的是百分比,自适应效果不如flex-grow=1。就想着,如果有能够解决flex布局下文字溢出的冷知识,会更好。

    那是不是意味着现有的经验下,flex布局造成文字溢出是一个棘手的问题,以后遇到这种需要做文字溢出的,就考虑用float,不要用flex?

    2、还是没有理解为什么我的代码里text盒子和price盒子给了宽度后就无法对齐。

    2023-03-18 11:00:17
  • 1、因为你没理解flex的使用方式,如你需要使用flex去处理子级的元素,首先你得给父元素添加display:flex才能让子级按照flex的方式进行排列。

    https://img1.sycdn.imooc.com//climg/64152e6a09f04aec14510713.jpg

    解决方式如下:

    https://img1.sycdn.imooc.com//climg/64152e8d09fdc14218250915.jpg

    2、解释如下:

    https://img1.sycdn.imooc.com//climg/64152f2c094ae78515120891.jpg

    2023-03-18 11:27:22
    1. 我尝试过在父级上加display:flex,结果就是price的文字无效,这就是我提问的标题的疑问。而给老师的代码里把父级的flex取消了,是为了让老师看到2里的问题。

      难道老师给父级设置dispaly:flex,给price设置flex:1后,price的文字溢出能生效?

    2. 就是再出现这种怪异现象后,我才问为啥,我以为是我代码的问题。

    2023-03-18 11:35:45
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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