【问题标题】:Blazor question, regarding width percentage based on propertyBlazor 问题,关于基于属性的宽度百分比
【发布时间】:2020-04-04 19:45:41
【问题描述】:

我对我在 Blazor 网站上的评分系统的宽度有疑问。我希望星星是基于我的电影的评分。像这样:

现在我不知道如何使用我的 movie.Rating 属性来设置星星的宽度。我也希望它看起来像这样,但意识到它不是那样工作的。

div class="rating-upper" style="width:" @movie.Rating"%">

我的代码看起来像这样(我现在已经放了 90%,但显然希望我的评分在那里):

感谢您的帮助和第一次在这里发帖,因为我找不到任何关于此的信息。也是 Blazor 新手和一般编程。

【问题讨论】:

  • 欢迎来到 Stack Overflow!请直接在问题中复制粘贴您的代码,而不是您的代码图片。

标签: css width blazor percentage rating


【解决方案1】:

我个人会为此使用 CSS 剪辑路径,并在结构上与您目前的有所不同。

首先是我的 CSS

    .rating {        
        --rating: 0;
        --percent: calc(var(--rating) * 20%);
        position: relative;
        display: inline;
    }
    .rating::after {        
        position: absolute;
        content:"⭐⭐⭐⭐⭐";
        clip-path: polygon(0 0, var(--percent) 0, var(--percent) 100%, 0 100%);
        background-color: transparent;
        /* Purely cosmetic to align these stars vertically */
        top: -0.2rem; 
    }
    .rating::before {
        position: absolute;
        left: calc(100%);
        content:"⭐⭐⭐⭐⭐";
        opacity: 0.2;
        /* Purely cosmetic to align these stars vertically */
        top: -0.2rem;
    }

还有一些 Razor 示例

<label class="rating" style=@($"--rating: {Rating}")>Rating : </label>

说明

“评级”类有一个前后都向内容添加一组星,它们被定位为重叠,背景设置为低不透明度,前景使用剪辑路径“屏蔽”星星到所需的宽度。

百分比宽度由 CSS 变量 --rating 计算得出,该变量使用 Razor 语法应用于 label

您可以在此处查看演示:https://blazorfiddle.com/s/b6jpqbhe

【讨论】:

  • 感谢您的帮助。我试过像你一样做,但似乎无法让它工作。我应该在我的情况下使用这行代码吗? 当我像你上面那样做时,我总是得到五颗星。顺便说一句,我的电影。评分是双倍的,评分范围为 0-5,所以我只想将我的评分乘以 20 以获得 0-100 的百分比(我认为这就是你在上面的代码中所做的) .
  • 你可能会使用类似的东西来代替你的 div,或者只是稍微调整你的 div
  • 抱歉,我之前在手机上使用 div 需要注意的是,默认情况下它将是 100% 宽度,这就是为什么我的 CSS 中有 display: inline 的原因。所以你可能正在计算一个百分比,但这将默认为整个 div 的百分比,默认为页面宽度......
猜你喜欢
  • 1970-01-01
  • 2012-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-31
  • 1970-01-01
  • 2023-03-31
  • 2017-06-11
相关资源
最近更新 更多