Tạo hiệu ứng gradient cho chữ trên trang web
  • Nhìn thấy design như thế này

    Các bạn sẽ làm gì: chắc có 1 số bạn sẽ làm như sau color: linear-gradient(to right, #30CFD0 0%, #330867 100%); // ố ồ

    Nhưng sau khi viết sau bạn thấy nó không nhận. Vậy phải làm sao giờ, google seach thui (lol)

    Hôm nay mình sẽ hướng dẫn các bạn làm sao để có color text gradient

Dùng CSS

  • Đầu tiên các bạn dùng background gradient những màu mà các bạn cần thêm
background: linear-gradient(to right, #30CFD0 0%, #330867 100%); // màu background gradient 
  •     Sau đó làm chìm text dưới background

        background-clip: text; // gán backgound gradient cho text( chìm text dưới background)

  •     Và làm text màu trong suốt: color: transparent;

  •     Đây là đoạn code hoàn thành, đơn giản phải không các bạn, chỉ với 3 dòng các bạn đã làm được text có nhiều màu theo ý mình rồi đó

    background: linear-gradient(to right, #30CFD0 0%, #330867 100%); 
    background-clip: text;
    color: transparent;

    Link demo : https://codepen.io/ovuthiyen/pen/mdRaBWK

Dùng Canvas HTML5

  • Đầu tiên dựng canvas có width và height là 300px

    <canvas id="myCanvas" width="300" height="300"></canvas>

  • Sau đó trong script xây dựng canvas
<script type="text/javascript">
    var canvas = document.getElementById('myCanvas');  // khai  báo  biến  canvas lấy  thuộc  tính  id  của  canvas
    ctx = canvas.getContext('2d');  // Xác  định  loại  canvas . 2D  các  bác  cứ  hiểu như chiều X và Y
</script>
  • Tiếp theo set font size và font family cho text mà ta cần dựng

    ctx.font = "70px arial"; // set font size và font family cho text

  • Đổ màu gradient cho text
    gradient.addColorStop(0, "#30CFD0");// đổ màu vị trí đầu
     gradient.addColorStop(1, "#330867"); // đổ màu vị trí kết thúc
  • Và cuối cùng là vẽ text và set vị trị hiện cho nó trên trục X và Y
 ctx.fillText("Hello Yen", 10, 50);  // text muốn hiện và vị trí hiện
  • Và đây là đoạn code hoàn thành:
   <canvas id="myCanvas" width="300" height="300"></canvas>
    <script>
      var canvas = document.getElementById("myCanvas");
      var ctx = canvas.getContext('2d');
     ctx.font = "70px arial";  // set font size và font family cho text
      var gradient = ctx.createLinearGradient(0, 0, 100, 200); 
      gradient.addColorStop(0, "#30CFD0");// đổ màu vị trí đầu
      gradient.addColorStop(1, "#330867"); // đổ màu vị trí kết thúc
      ctx.fillStyle = gradient;
      ctx.fillText("Hello Yen", 10, 50);  // text muốn hiện và vị trí hiện
    </script>

    Link demo: https://codepen.io/ovuthiyen/pen/LYxMzKr

Dùng SVG

  •     Dựng svg có width và height là 50px và 130px

        <svg viewBox="0 0 50 130">

  •     Sau đó định nghĩa những thứ cần dùng trong defs( các bác cứ hiểu chỗ này gần như là khai báo biến)

  •     ở đây mình định nghĩa linergradient có màu ở vị trí đầu tiên là mã màu #30CFD0 và kết thúc là mã #330867

 <defs>
    <linearGradient id="rainbow" x1="0" x2="100%" y1="0" y2="100%" gradientUnits="userSpaceOnUse" >
      <stop stop-color="#30CFD0" offset="0%"/>  // màu bắt đầu
      <stop stop-color="#330867" offset="100%"/>  // màu kết thúc
    </linearGradient>
  </defs>
  • Tiếp theo là chúng ta fill cái biến vừa tạo ở defs vào text là chúng ta đã set dc màu gradient cho text đó
<text fill="url(#rainbow)">
  • Bước cuối là sét font size cho text và vị trí của text đó
    <tspan font-size="48" x="0" dy="60">Hello Yen</tspan>  // font size và text cần hiện vị trí hiện

    Và đây là đoạn code hoàn thành

<svg viewBox="0 0 50 130"> 
  <defs>
    <linearGradient id="rainbow" x1="0" x2="100%" y1="0" y2="100%" gradientUnits="userSpaceOnUse" >
      <stop stop-color="#30CFD0" offset="0%"/>  // màu bắt đầu
      <stop stop-color="#330867" offset="100%"/>  // màu kết thúc
    </linearGradient>
  </defs>
    <text fill="url(#rainbow)">
      <tspan font-size="48" x="0" dy="60">Hello Yen</tspan>  // font size và text cần hiện vị trí hiện
    </text>
</svg>

    Link demo: https://codepen.io/ovuthiyen/pen/yLgGPvz

Cắt ảnh

  • Cách này bạn chỉ cần trỏ chuột vào đoạn text cần lấy vào export cái text đó xong =))

Kết luận

  • Tạm thời mình nghĩ dc 4 cách để làm text có nhiều màu. Mọi người nghĩ dc thêm cách gì thì có thể share ở comment ạ. cảm ơn các bạn đã đọc bài viết

Nguồn: Viblo

Bình luận
Vui lòng đăng nhập để bình luận
Một số bài viết liên quan