代码之家  ›  专栏  ›  技术社区  ›  Daemons

边界图像:linear-gradient();不创建边框

  •  0
  • Daemons  · 技术社区  · 2 年前

    我试图在我使用JS动态创建的div周围创建一个线性梯度边界。不幸的是,据我所知,没有出现任何边界(不,边界没有(或不应该)显示为黑色。

    这是我的代码:

    const devlogList = document.createElement("ul");
    devlogList.classList.add("cards");
    
    const devlogs = [{
      name: "Upriver (placeholder)",
      gradientTopLeft: "red",
      gradientTopRight: "blue",
      imageSrc: "exampleimage.png",
      description: "description",
      status: "status",
    }];
    
    for (let i = 0; i < devlogs.length; i++) {
      const devlogItem = document.createElement("li");
    
      const devlogDiv = document.createElement("div");
      devlogDiv.classList.add("devlog");
    
      const devlogTitle = document.createElement("p");
      devlogTitle.style.color = devlogs[i].gradientTopLeft;
      devlogTitle.innerText = devlogs[i].name;
    
      const devlogStatus = document.createElement("p");
      devlogStatus.innerText = devlogs[i].status;
    
      devlogDiv.appendChild(devlogTitle);
      devlogDiv.appendChild(devlogStatus);
    
      devlogItem.appendChild(devlogDiv);
    
      devlogList.appendChild(devlogItem);
    }
    
    document.getElementById("devlogs").appendChild(devlogList);
    .devlog {
      list-style-type: none;
      border-image: linear-gradient(to bottom right, blue, red) 1;
      width: 500px;
    }
    
    body {
      background-color: black;
      color: white;
    }
    <div id="devlogs"></div>

    此外,我使用的是Firefox v126.0.1(64位),它应该支持 gradient 与 border-image 属性(自v29起)。

    1 回复  |  直到 2 年前
        1
  •  1
  •   Ray Wallace    2 年前

    只需在.css中设置边框样式

    border-style: solid;
    

    根据MDM“如果边框样式为none或边框宽度为0,则某些浏览器不会渲染边框图像。”

    const devlogList = document.createElement("ul");
    devlogList.classList.add("cards");
    
    const devlogs = [{
      name: "Upriver (placeholder)",
      gradientTopLeft: "red",
      gradientTopRight: "blue",
      imageSrc: "exampleimage.png",
      description: "description",
      status: "status",
    }];
    
    for (let i = 0; i < devlogs.length; i++) {
      const devlogItem = document.createElement("li");
    
      const devlogDiv = document.createElement("div");
      devlogDiv.classList.add("devlog");
    
      const devlogTitle = document.createElement("p");
      devlogTitle.style.color = devlogs[i].gradientTopLeft;
      devlogTitle.innerText = devlogs[i].name;
    
      const devlogStatus = document.createElement("p");
      devlogStatus.innerText = devlogs[i].status;
    
      devlogDiv.appendChild(devlogTitle);
      devlogDiv.appendChild(devlogStatus);
    
      devlogItem.appendChild(devlogDiv);
    
      devlogList.appendChild(devlogItem);
    }
    
    document.getElementById("devlogs").appendChild(devlogList);
    .devlog {
      list-style-type: none;
      border-image: linear-gradient(to bottom right, blue, red) 1;
      width: 500px;
    
      /* NOTE Needed by some browsers */
      border-style: solid;
    }
    
    body {
      background-color: black;
      color: white;
    }
    <div id="devlogs"></div>