Есть много способов сделать это.Это очень легко, если изображение и его высота контейнера известны, иначе сложно.Выберите решение, которое соответствует вашим потребностям:
Метод 1: высота строки, выравнивание текста и выравнивание по вертикали
#div1 {
width: 300px;
height: 300px;
background-color: blue;
line-height: 300px;
text-align: right;
}
#div1 img {
vertical-align: middle;
}
<div id="div1">
<img src="http://dummyimage.com/100x50/fc0/000000.png">​
</div>
Метод 2: абсолютное / относительное позиционирование, известная высота изображения
#div1 {
width: 300px;
height: 300px;
background-color: blue;
position: relative;
}
#div1 img {
position: absolute;
right: 0;
top: 50%;
margin-top: -25px; /* -(image_height/2) */
}
<div id="div1">
<img src="http://dummyimage.com/100x50/fc0/000000.png">
</div>
Метод 3: известны абсолютное / относительное расположение, изображение и высота контейнера
#div1 {
width: 300px;
height: 300px;
background-color: blue;
}
#div1 img {
float: right;
position: relative;
top: 125px; /* (div_height-image_height)/2 */
}
<div id="div1">
<img src="http://dummyimage.com/100x50/fc0/000000.png">
</div>
jsFiddle