javascript 如何定位徽章图标独立于头像的大小?

d7v8vwbk  于 2023-11-15  发布在  Java
关注(0)|答案(1)|浏览(109)

我需要建立一个头像组件,将有badgets。问题是,定位是不正确的,根据头像的大小。
在下面的图片中,很容易理解问题所在。你能告诉我如何调整定位,以便无论头像的大小都是正确的吗?
下面是我放入codesandbox的代码
先谢谢你了。


的数据

  1. import React from "react";
  2. import BadgeSvg from "./BadgeSvg";
  3. import "./avatar.scss";
  4. const Avatar = ({ size }) => {
  5. const image = "https://i.imgur.com/pKHO357.png";
  6. return (
  7. <div>
  8. <div className={`content-icon ${size}`}>
  9. <img
  10. src={image}
  11. alt="Avatar Image"
  12. className={`content-icon ${size}`}
  13. />
  14. </div>
  15. <div className="badge">
  16. <BadgeSvg size={size} />
  17. </div>
  18. </div>
  19. );
  20. };
  21. export default Avatar;

个字符

k4emjkb1

k4emjkb11#

重新构造jsx可以解决css的绝对和相对位置问题。但是为了完美的定位,你需要像下面这样手动计算一些css。
这是您的Avatar组件

  1. import React from "react";
  2. import BadgeSvg from "./BadgeSvg";
  3. import "./avatar.scss";
  4. const Avatar = ({ size }) => {
  5. const image = "https://i.imgur.com/pKHO357.png";
  6. const getRightValue = (aSize) => {
  7. if (aSize === "medium") {
  8. return { right: "-3px" };
  9. }
  10. if (aSize === "xlarge") {
  11. return { right: "5px" };
  12. }
  13. if (aSize === "large") {
  14. return { right: 0 };
  15. }
  16. };
  17. return (
  18. <div>
  19. <div className={`content-icon ${size}`}>
  20. <img
  21. src={image}
  22. alt="Avatar Image"
  23. className={`content-icon ${size}`}
  24. />
  25. <div className="badge" style={getRightValue(size)}>
  26. <BadgeSvg size={size} />
  27. </div>
  28. </div>
  29. </div>
  30. );
  31. };
  32. export default Avatar;

字符串
这是最终的css

  1. .content-icon {
  2. position: relative;
  3. /* rest of css */
  4. }
  5. .badge {
  6. position: absolute;
  7. bottom: 0;
  8. }


这是最后的输出,希望对你有帮助。


的数据

展开查看全部

相关问题