You can use the background-clip CSS property to create text gradients that are made up of selectable text. This approach can be used with background images as well.
h1 {
font-size: 100px;
background-image: linear-gradient(300deg, tomato 25%, red 80%);
background-clip: text;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}