質問者さんが実現したいことがわからないですが、想像でアドバイスしてみます。
また、HTMLとCSSの基本知識が抜けているような気がしているので、(違かったらすみません)
どの辺を勉強すればいいかの参考になればと思います。
HTMLは文書構造、CSSは見た目を調整
まず、提示しているコードを見やすくするために、cssを分けて整理すると例えば以下のようになるかと思います。(わかりやすさのためにclassを定義してます)
HTML
1<div class="box">
2 <div class="floatBox">
3 <img src="/img/hoge.jpg" class="image"><br>
4 <a href="">ボタンだよ</a>
5 </div>
6 あああああああああああああああああああああああああああああああさああああああああああああああああああ さあああああああああああああああああ
7</div>
CSS
1.box {
2 border: 1px solid;
3}
4.floatBox {
5 float: right;
6}
7.image {
8 border: 1px solid red;
9 width: 100px;
10 height: 10px;
11}
参考:CSSとは?
参考:スタイルシートの class と id の使い分け
文書を構成するブロックレベル要素と文章の一部のインライン要素
「あああああああああああああああああああああああああああああああさああああああああああああああああああ さあああああああああああああああああ」と書いているテキストが <p>
などで囲われていなかったり、 br
で無理に見た目を調整しようとされているところから、以下のリンクにあるようなことを知るとよいかと思います。
参考:ブロックレベル要素とインライン要素
ブロックレベル要素は、
一般的なブラウザでは前後に改行が入ります。
インライン要素は、
一般的なブラウザでは前後に改行が入らず、文章の一部として表示されます。
ただ、それだからと言って、前後に改行がほしいがためにブロックレベル要素でかけばいいということではなく、
あくまでHTMLでは文書構造を表し、CSSで見た目を調整してください。
CSSには display
というブロックレベル・インライン等の、要素の表示形式を指定できるプロパティが存在します。そちらを活用すれば CSSで見た目を調整すること が実現できるかと思います。
参考:display …… 要素の表示形式(ブロック・インライン)を指定する
floatは...
そして、最後にさり気なく使われている float
ですが、これは初心者が最初に理解できずにつまずくところかと思います。(僕もつまずきました)
ここだけでうまく説明できる気がしないので、「float css」でいろいろググッてみてください。
以下のサイトでうまく説明されています。
CSSの【float】についてちょっと本気出して説明してみた。