如何仅使用CSS中的百分比创建圆形图像?

时间:2019-06-09 17:07:25

标签: javascript css

当我尝试仅使用百分比制作圆形图像时,它只是失败。

为什么要这么做? ,因为这将允许我创建高度模块化的函数来处理元素的大小,并使它们同时响应。

>

在这里我的沙盒https://stackblitz.com/edit/react-kkbyff

这是我的reactjs片段:

const generateStyle=(sizeReference)=>{
  let unity="%" // FAIL TO MAKE CIRCULE WHEN I USE PERCENTAGES HERE
  // console.log(sizeReference+unity)
  return {
    height:sizeReference+unity,
    width:sizeReference+unity,
    borderRadius:(sizeReference/2)+unity
  }
}

function App() {
  return (
    <div className="photo_slider">
      <div className="pic1">
        <img 
          src="https://wallpapercave.com/wp/Nduz52P.jpg" 
          alt="awesome_image"
          style={generateStyle(30)}
        />
      </div>
      <div className="pic2">
        <img 
          src="https://wallpapercave.com/wp/5MsoNXS.jpg" 
          alt="awesome_image"
          style={generateStyle(15)}
          />
      </div>
      <div className="pic3">
        <img 
          src="https://wallpapercave.com/wp/Nduz52P.jpg" 
          alt="awesome_image"
          style={generateStyle(80)}
        />
      </div>
      <div className="pic4">
        <img 
          src="https://wallpapercave.com/wp/5MsoNXS.jpg" 
          alt="awesome_image"
          style={generateStyle(35)}
        />
      </div>
      <div className="pic5">
        <img 
          src="https://wallpapercave.com/wp/Nduz52P.jpg" 
          alt="awesome_image"
          style={generateStyle(60)}
        />
      </div>
    </div>
  );
}

CSS:

.photo_slider{ 
  width:100%;
  height:100%;
  display:flex;
  justify-content: center;
  align-items: center;
  background: beige;
}

如何仅使用百分比制作圆形图像?

任何提示都会很棒, 谢谢

2 个答案:

答案 0 :(得分:1)

我假设您只是希望所有图像都显示为圆圈。

更改此

borderRadius:(sizeReference/2)+unity

对此

borderRadius: "50%"

对于真圆,仅将sizeReference用作宽度和高度。

答案 1 :(得分:0)

采用css方式
由于即使使用borderRadius: "50%",非正方形图像也不会形成圆形 实现此目的的最佳方法是将图像放置在方形容器内,并在容器上声明borderRadius: "50%"; overflow: "hidden"