Witaj.
1. Nie używaj opacity. W CSS dla body wyzeruj paddingi i marginy. Dla tego diva dodaj takie właściwości:
// w nawiasach, ktore sa po "rgba" - to "0.4" czyli ostatni parametr odpowiada za przezroczystosc. w nawiasie po "url" piszesz sciezke do obrazu, ktory ma byc tlem
background: linear-gradient(to left, rgba(0,0,0,0.4) 0%,rgba(0,0,0,0.4) 100%), url("obraz.jpg");
Ta właściwość powoduje przeźroczystość obrazka, która to przeźroczystość nie jest dziedziczona przez napis w przeciwieństwie do opacity.
2. Nie do końca rozumiem. Ale jeśli chodzi Ci o to o czym myślę to może pomóc:
// powoduje, ze cały obrazek jest wyswietlany w wymiarach diva
background-size: 100%;
Pozdrawiam!