You'll need to fix both the incorrect class and the missing :hover pseudo class to make it work properly:
div.home_box a:hover span.box_caption span.box_text {
opacity:1;
}
Note:
Opacity is not supported in all browsers without some vendor prefixes. In order to accomodate the maximum number of browsers, you'll need to add some additional CSS:
div.home_box a:hover span.box_caption span.box_text {
/* Required for IE 5, 6, 7 */
/* ...or something to trigger hasLayout, like zoom: 1; */
width: 100%;
/* Theoretically for IE 8 & 9 (more valid) */
/* ...but not required as filter works too */
/* should come BEFORE filter */
-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
/* This works in IE 8 & 9 too */
/* ... but also 5, 6, 7 */
filter: alpha(opacity=100);
/* Older than Firefox 0.9 */
-moz-opacity: 1.0;
/* Safari 1.x (pre WebKit!) */
-khtml-opacity: 1.0;
/* Modern!
/* Firefox 0.9+, Safari 2?, Chrome any?
/* Opera 9+, IE 9+ */
opacity: 1.0;
}
Source: CSS Tricks
Disclaimer: The above snippet came directly from CSS Tricks with two modification being. The first modification was the substitution of their .transparent selector for yours to make a complete snippet. The second was the changing of the opacity values to support your request of 1.
.home_box a:hover .box_text? Your css is not working because you are not targeting the hover state and you don't have home_caption anywhere